Google Sheets Script DriveApp.getFiles() 发生服务器错误

Google Sheets Script DriveApp.getFiles() A server error occurred

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

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 语句处停止。日志文件显示:

Error Exception: We're sorry, a server error occurred. Please wait a bit and try again. at logFiles(Duplicate:190:14)

不用说,错误并没有神奇地自行解决,但该功能昨天才正常工作。

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

我只使用免费的个人 google 帐户,因为此代码附加到单个 Google Sheet。同一脚本中的其他功能正在运行,因此权限似乎没问题;否则我会期望权限错误。

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

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

这样试试:

这样会花费更少的时间,并且您会在活动 sheet

的第 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);
}

在对 Project 界面进行了大量研究后,我设法通过启用 Google Drive API 和 Google Sheets API 来实现此功能 Google 云平台 API 我的项目的仪表板。

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