【问题标题】:Google script Type error when try to move files to folder尝试将文件移动到文件夹时出现 Google 脚本类型错误
【发布时间】: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

标签: file google-apps-script directory move


【解决方案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);
  }
}

参考资料:

【讨论】:

    【解决方案2】:

    尝试添加如下内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2018-01-02
      相关资源
      最近更新 更多