这是我的代码的一部分,我尝试在新文件夹中创建一系列电子表格,这些电子表格都是单个模板的所有副本,以便稍后单独编辑。以下是一些示例代码:
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;
}
我收到错误&#34;无效的参数(第21行,文件&#34;&#34;)&#34;这是指行template.makeCopy(accountNames [i] +&#34; Dynamic Budget&#34;,文件夹)。经过多次测试后,我得出结论,错误不是名称的问题,而是目的地。文件夹声明之前的记录器打印为true,文件夹确实存在于我的驱动器中,因此为什么我感到困惑,为什么这似乎不是一个有效的目录。任何帮助将不胜感激。
答案 0 :(得分:0)
我不确定这是否直接解决了你的问题,但是在调用makeCopy()函数时我也遇到了一个奇怪的“无效参数”错误。尽管论证完全有效,但它仍然挂在一个单独的项目上。
事实证明,该文件是Lucid Chart文件,该文件是使用Google Drive SDK将其文件存储在Google云端硬盘上的第三方应用程序。当我检查此文件的MIME类型时,它是“application / vnd.google-apps.drive-sdk.7081045131”。看起来这种类型的文件超出了makeCopy()函数的能力。现在我们知道了。
如果我不那么懒,我现在可以以编程方式避免使用非标准MIME类型,但我只是从文件列表中过滤掉了这些文件。