我正在竭尽所能地执行我想做的所有事情,但是在函数末尾返回一条错误消息,这阻止了脚本的其余部分运行。
我正在使用此脚本:
function abc(){
var fileName = "file name";
var tabName = "tab";
clear(tabName,"A:AE");
var excelFile = DriveApp.getFilesByName(fileName).next();
var fileId = excelFile.getId();
var folderId = "folder id";
var blob = excelFile.getBlob();
var resource = {
title: excelFile.getName(),
mimeType: MimeType.GOOGLE_SHEETS,
parents: [{id: folderId}],
};
var id = Drive.Files.insert(resource,blob).id;
var newsheet = SpreadsheetApp.openById(id).getSheets()[0].getRange("A:AE").getValues();
SpreadsheetApp.getActive().getSheetByName(tabName).getRange("A:AE").setValues(newsheet);
Logger.log("ok so far");
Drive.Files.remove(id);
}
我想删除刚刚创建的文件,它可以很好地完成工作,但是会生成如下错误消息:
缺少文档1b0pLioLpwZndFuW4kRQzxd5gkfZjWFIT5Qr8HV-LJvo(也许已将其删除,或者您没有读取权限?)
它会创建文件,将值复制到另一个电子表格,然后删除创建的文件,就像必须的那样。然后脚本结束,我还需要运行其他功能。
有什么想法要解决吗?
我也尝试了DriveApp.removeFile(file),
,但是脚本完成了,并且没有从文件夹中删除文件。
这是错误消息:
“缺少文档1TVRiqJKN_bSXLW8B02XzUlTOUgT192prUYYwvBwu89w(也许已将其删除,或者您没有读取权限?)”
这是脚本生成的日志:
[19-11-19 08:58:22:466 PST] TSC cleaned
[19-11-19 08:58:22:466 PST] TSC has started
[19-11-19 08:58:26:737 PST] TSC file generated on ID = 1TVRiqJKN_bSXLW8B02XzUlTOUgT192prUYYwvBwu89w
[19-11-19 08:58:27:363 PST] 1TVRiqJKN_bSXLW8B02XzUlTOUgT192prUYYwvBwu89w
[19-11-19 08:58:27:497 PST] TSC copied to destination sheet and id = 1TVRiqJKN_bSXLW8B02XzUlTOUgT192prUYYwvBwu89w
[19-11-19 08:58:28:171 PST] TSC file deleted
[19-11-19 08:58:30:323 PST] TSC imported
最后一行“导入的TSC”是函数的最后一行,因此看起来它正在完成该函数,但最终出现了消息。我可能不得不尝试其他选项,而不是Drive API。谢谢您的帮助,如果我成功了,我会通知您。
答案 0 :(得分:1)
我也遇到了这个问题,无法确切查明是什么原因,但是发现如果将文件创建和删除拆分为单独的功能并分别运行它们,则不会出现此错误。但是,如果您从第三个函数中调用这两个函数,则会引发错误。
手动启动时运行良好...
createFile() {
let fileId = Drive.Files.insert(fileId, blob);
}
手动启动时也运行无错误...
deleteFile() {
Drive.Files.remove(fileId);
}
错误,提示找不到文件...
createAndDelete() {
createFile();
deleteFile();
}
答案 1 :(得分:0)
如评论中的@Alan Wells
所示,您没有给云端硬盘足够的时间来生成文件,复制值并将其删除。
尝试在Utilities.sleep(15000);
之后添加Drive.insert
。
更多信息here。
答案 2 :(得分:0)
伙计们,我最终为文件创建了一个存档,因此我不会删除它们,我将它们保留在我作为存档创建的文件夹中。 谢谢您的帮助。
答案 3 :(得分:0)
我遇到了同样的问题。如果我只运行Drive.Files.insert
并且下一个Drive.Files.remove
文件被删除并且没有错误消息,但是如果我在SpreadsheetApp.openById
之前使用Drive.Files.remove
打开文件,则文件被删除并且脚本继续,但是我得到那个错误。我尝试Utilities.sleep
最多(几乎是理智的)20秒钟,然后删除并运行脚本几次,但结果都是随机的(有时会出错,有时也不会出错)。
该如何解决?