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

Posted

技术标签:

【中文标题】尝试将文件移动到文件夹时出现 Google 脚本类型错误【英文标题】:Google script Type error when try to move files to folder 【发布时间】:2022-01-23 07:18:41 【问题描述】:

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

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

我应该怎么做才能摆脱这个错误?我应该使用其他方式将多个文件移动到特定文件夹吗?

【问题讨论】:

jpgfiles 是迭代器而不是文件 see this 【参考方案1】:

修改点:

TypeError: jpgfiles.moveTo is not a function 的问题是因为moveTo 的参数是文件夹对象。在您的脚本中,使用了文件夹 ID。 DriveApp.getFolderById(srcfolderId) 可以声明为一个变量。 getFilesByType 返回 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);
  

参考资料:

getFilesByType(mimeType) moveTo(destination)

【讨论】:

【参考方案2】:

尝试添加如下内容:

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

【讨论】:

以上是关于尝试将文件移动到文件夹时出现 Google 脚本类型错误的主要内容,如果未能解决你的问题,请参考以下文章