Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Drive.Files.remove(fileId)删除该项,但返回错误消息_Google Apps Script_Google Sheets_Google Drive Api - Fatal编程技术网

Google apps script Drive.Files.remove(fileId)删除该项,但返回错误消息

Google apps script Drive.Files.remove(fileId)删除该项,但返回错误消息,google-apps-script,google-sheets,google-drive-api,Google Apps Script,Google Sheets,Google Drive Api,我正在努力编写代码,这些代码可以完成我想要的一切,但在函数末尾返回一条错误消息,这会阻止脚本的其余部分运行 我正在使用以下脚本: function abc(){ var fileName = "file name"; var tabName = "tab"; clear(tabName,"A:AE"); var excelFile = DriveApp.getFilesByName(fileName).next(); var fileId = excel

我正在努力编写代码,这些代码可以完成我想要的一切,但在函数末尾返回一条错误消息,这会阻止脚本的其余部分运行

我正在使用以下脚本:

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_BSXLW8B02XZULTOUGT192PruyywVbW89W丢失(可能已删除,或者您没有读取权限?)

这是脚本生成的日志:

[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 Imported”是该函数的最后一行,因此看起来它正在完成该函数,但最后会出现消息。我可能不得不尝试其他选项,而不是驱动器API。谢谢你们的帮助,伙计们,如果我成功了,我会告诉你们的。

正如评论中提到的
@Alan Wells
,您没有给驱动器足够的时间来生成文件、复制值并删除它

尝试添加
Utilities.sleep(15000)
驱动器之后。插入


更多信息。

伙计们,我最终为这些文件创建了一个存档,所以我不会删除它们,我只会将它们留在我创建为存档的文件夹中。
谢谢你的帮助。

我也遇到了同样的问题。如果我只运行
Drive.Files.insert
和next
Drive.Files.remove
文件将被删除,并且没有错误消息,但是如果我在
Drive.Files.remove
之前使用
SpreadsheetApp.openById
打开文件,则文件将被删除,脚本将继续,但我会收到该错误。我尝试了
Utilities.sleep
,在删除脚本之前有20秒的时间(几乎正常),并随机运行脚本几次(有时出错,有时无误)。
如何解决这个问题?

我也遇到了这个问题,无法确切确定是什么原因导致了这个问题,但发现如果将文件创建和删除拆分为单独的函数并单独运行,则不会出现此错误。但是,如果从第三个函数中调用这两个函数,则会抛出错误

手动启动时运行正常

createFile() {
  let fileId = Drive.Files.insert(fileId, blob);
}
deleteFile() {
  Drive.Files.remove(fileId);
}
手动启动时也会运行,不会出错

createFile() {
  let fileId = Drive.Files.insert(fileId, blob);
}
deleteFile() {
  Drive.Files.remove(fileId);
}
失败,错误为找不到文件

createAndDelete() {
  createFile();
  deleteFile();
}

您甚至在代码中定义了什么是驱动器?这看起来完全是一团糟。请举一个最简单的例子来说明你在没有额外东西的情况下想要做什么。我启用了驱动API。我想将excel文件导入到我已有的工作表中,我发现最简单的方法是从excel文件创建一个GSheets文件,然后将该文件的值导入到我已有的工作表中。因此,我从excel文件创建了一个GSheet,将数据复制到我的工作表中,然后删除创建的文件。一切都很好,但最后它生成了错误,我将该函数移到了顺序的最后一个,因此它运行脚本时完全正常,但最后仍然生成了错误。请尝试在删除之前暂停代码:
Utilities.sleep(5000);驱动器.Files.remove(id)
@Alexandre你为什么不使用DriveApp删除文件?我不明白你为什么需要使用驱动器API?我正在使用驱动器API创建文件,当我使用DriveApp删除文件时,脚本完成,但不会从文件夹中删除文件。脚本实际上是在删除文件,就像它应该做的那样,但是仍然返回错误消息。@Alexandre也许您正在运行函数两次,您能创建一个计数器来检查代码执行了多少次吗?我在主帖子中发布了日志,我不知道还能做什么,我想我会尝试其他选项,看看它是如何运行的。谢谢你们的帮助。你好,杰克,正如我提到的,我不再犯这个错误了,我只是创建了一个新文件夹,我把所有创建的工作表都放在那里。在我的例子中,我真的不需要删除它们,但也许你可以创建一个脚本,每天删除一次该文件夹中的所有文件,或者任何适合你需要的东西。我也没有经历过这个选项,但它可能会起作用。