0

这是我的代码的一部分,我试图在一个新文件夹中创建一系列电子表格,这些电子表格都是单个模板的所有副本,以后可以单独编辑。这是一些示例代码:

function myFunction() {
  var accountNames = [1,2,3,4,5];
  findSpreadSheets(accountNames);
}

function findSpreadSheets(accountNames) {
  var files = [];
  Logger.log(DriveApp.getFoldersByName("Automated Budgets").hasNext());
  var folder = DriveApp.getFoldersByName("Automated Budgets").next();
  for (var i=0; i<accountNames.length; i++) {
    var spreadsheetIterator = DriveApp.getFilesByName(accountNames[i] + " Dynamic Budget");
    if (spreadsheetIterator.hasNext()){
      var file = spreadsheetIterator.next();
      files.push(file);
    }
    else{
      var template = DriveApp.getFilesByName("Dynamic Budget Template").next()
      template.makeCopy(accountNames[i] + " Dynamic Budget", folder);
  var newFile = DriveApp.getFilesByName(accountNames[i] + " Dynamic Budget").next();
      newFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
      files.push(newFile);
    }
  }

  return files;

}

我收到错误“无效参数(第 21 行,文件“”)”,它指的是行 template.makeCopy(accountNames[i] +“Dynamic Budget”,文件夹)。经过多次测试,我得出结论,错误不是名称问题,而是目的地问题。文件夹声明之前的 Logger 打印为 true,该文件夹确实存在于我的驱动器中,因此我对为什么这似乎不是一个有效目录感到困惑。任何帮助,将不胜感激。

4

1 回答 1

0

我不确定这是否直接解决了您的问题,但在调用 makeCopy() 函数时,我也遇到了一个奇怪的“无效参数”错误。尽管论点完全有效,但它一直挂在一个项目上。

事实证明,该文件是一个 Lucid Chart 文件,这是一个使用 Google Drive SDK 将其文件存储在 Google Drive 上的第三方应用程序。当我检查此文件的 MIME 类型时,它是“application/vnd.google-apps.drive-sdk.7081045131”。这种类型的文件似乎超出了 makeCopy() 函数的能力。现在我们知道了。

如果我不那么懒惰,我现在可以通过编程方式避免非标准 MIME 类型,但我只是从文件列表中过滤掉这些文件。

于 2016-06-16T07:10:35.720 回答