【问题标题】:Google Sheets Script DriveApp.getFiles() A server error occurredGoogle Sheets Script DriveApp.getFiles() 发生服务器错误
【发布时间】:2021-12-17 20:43:44
【问题描述】:

作为较长脚本的一部分,我使用 DriveApp.getFiles() 函数来列出我的谷歌驱动器上的文件,如下所示:

function logFiles(){
// Log the name of every file in the user's Drive.
var files = DriveApp.getFiles();
while (files.hasNext()) {
  var file = files.next();
  Logger.log(file.getName());
}
}

使用调试功能,由于文件未定义,执行会在 while 语句处停止。日志文件显示:

错误异常:很抱歉,发生服务器错误。请稍等 再试一次。 在日志文件(重复:190:14)

毋庸置疑,错误并没有神奇地自行解决,但该功能昨天才正常工作。

目前采取的步骤是创建一个项目并使用项目 ID 部署代码。我已将自己和另一个人指定为项目“所有者”,并且我们都被列为运行脚本的测试帐户。

我只使用免费的个人 Google 帐户,因为此代码附加到单个 Google 表格。同一脚本中的其他功能正在运行,因此权限似乎还可以;否则我会遇到权限错误。

上面的示例代码直接取自谷歌参考文档,但它仍然不起作用,这似乎消除了我代码中的任何手指问题。

对于可能导致此问题的任何想法,我们将不胜感激。

【问题讨论】:

    标签: google-apps-script google-sheets google-sheets-api


    【解决方案1】:

    试试这个方法:

    这样会花费更少的时间,并且您会在活动工作表的第 1 列中获得结果

    function logFiles() {
      const ss = SpreadsheetApp.getActive();
      const sh = ss.getActiveSheet();
      var files = DriveApp.getFiles();
      let fA = [];
      while (files.hasNext()) {
        fA.push([files.next()]);
      }
      sh.getRange(1,1,fA.length,1).setValues(fA);
    }
    

    【讨论】:

    • 非常感谢 Cooper 的替代建议。我的应用案例略有不同,但无论如何您的代码都因同样的原因而失败; files.hasNext() 未定义。这是因为 DriveApp.getFiles() 的结果是 NULL,这是我试图解决的问题。通过引用“服务器错误”并要求我稍后再试,错误日志消息没有帮助。也就是说,我在下面找到了适合我的解决方案。
    • 它对我有用
    • 我确定确实如此。没有明显的理由不应该(我怀疑)与 Google Cloud Project 设置有关。无论错误是什么,异常都是通用的,下面的 API 步骤似乎已经为我解决了。它比好奇,好奇这个星球上好奇的东西还要好奇。如果有人有关于该错误的更多信息,无论是 Oauth 问题还是仅由我启用的一个或其他 API 授予的功能,我都会很高兴听到。
    【解决方案2】:

    在对项目界面进行了多次探索之后,我通过从 Google Cloud Platform API 仪表板为我的项目启用了 Google Drive API 和 Google Sheets API 来设法使其正常工作。

    我不知道为什么会这样,但确实如此。该脚本直接绑定到位于正在搜索的同一驱动器中的谷歌表,因此所有帐户都应该在没有此步骤的情况下工作。但是对于它的价值 - 这对我来说是解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-17
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多