Google 尝试将文件移动到文件夹时出现脚本类型错误

Google script Type error when try to move files to folder

我正在尝试根据 MIME 类型 select 多个文件(在本例中为 JPG 和 Google 文档)并移动到每种类型的特定文件夹。所以我尝试了以下方法:

function test() {
  var srcfolderId = "abcdefghi"; 

  var jpgFolderID=DriveApp.getFolderById(srcfolderId).createFolder("jpgfiles").getId();
  var gdocFolderID=DriveApp.getFolderById(srcfolderId).createFolder("gdocfiles").getId();

  var jpgfiles=DriveApp.getFolderById(srcfolderId).getFilesByType(MimeType.JPEG);
  var gdocfiles=DriveApp.getFolderById(srcfolderId).getFilesByType(MimeType.GOOGLE_DOCS);

  jpgfiles.moveTo(jpgFolderID);
  gdocfiles.moveTo(gdocFolderID);
}

但这会产生错误:

TypeError: jpgfiles.moveTo is not a function

我应该怎么做才能摆脱这个错误?我是否应该使用不同的方式将多个文件移动到特定文件夹?

尝试添加如下内容:

while(jpgfiles.hasNext()) {
  let file = jpgfiles.next();
  file.mmoveTo()....

修改点:

  • 你的问题 TypeError: jpgfiles.moveTo is not a function 是因为 moveTo 的参数是文件夹对象。在您的脚本中,使用了文件夹 ID。
  • DriveApp.getFolderById(srcfolderId)可以声明为一个变量。
  • getFilesByType returns FileIterator.

当这些点体现在你的脚本中,就变成了下面这样。

修改后的脚本:

function test() {
  var srcfolderId = "abcdefghi";
  var folder = DriveApp.getFolderById(srcfolderId);
  var jpgFolder = folder.createFolder("jpgfiles");
  var gdocFolder = folder.createFolder("gdocfiles");
 
  var jpgfiles = folder.getFilesByType(MimeType.JPEG);
  while (jpgfiles.hasNext()) {
    jpgfiles.next().moveTo(jpgFolder);
  }

  var gdocfiles = folder.getFilesByType(MimeType.GOOGLE_DOCS);
  while (gdocfiles.hasNext()) {
    gdocfiles.next().moveTo(gdocFolder);
  }
}

参考文献: