Google apps script 谷歌应用程序脚本在30分钟后超时

Google apps script 谷歌应用程序脚本在30分钟后超时,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我正在运行下面的脚本,但它会出错并显示一条错误消息“超时”,因为我提供的文件夹Id下有很多文件夹 有人能帮我优化它或替代方法吗 function listFolderContents() { var currentFolder = DriveApp.getFolderById("0B89Y-hAfWt_HVkhSbWprOVhPM00"); traverseFolder(currentFolder); } function traverseFolder(folder) { Dri

我正在运行下面的脚本,但它会出错并显示一条错误消息“超时”,因为我提供的文件夹Id下有很多文件夹

有人能帮我优化它或替代方法吗

function listFolderContents() {
  var currentFolder = DriveApp.getFolderById("0B89Y-hAfWt_HVkhSbWprOVhPM00");
  traverseFolder(currentFolder);
}

function traverseFolder(folder) { 
  DriveApp.getRootFolder().removeFolder(folder);
  var subFolders = folder.getFolders();
  while (subFolders.hasNext()) {
    traverseFolder(subFolders.next());
  }
}

看起来您正在递归删除文件夹。尝试在递归调用之后将
removeFolder
调用移动到。否则,在调用
getFolders
之前删除文件夹,这就是为什么我认为它会超时的原因

像这样:

function deleteFolder(folder) { 
  var subFolders = folder.getFolders();
  while (subFolders.hasNext()) {
    deleteFolder(subFolders.next());
  }
  DriveApp.getRootFolder().removeFolder(folder);
}
恢复功能的终止条件是没有子文件夹,即您位于叶文件夹中


参见

我认为这种情况下的解决方案可能是使用
另一个on stackoverflow中提供了使用continuationToken进行迭代的示例。

期望的行为是什么?考虑到驱动器文件夹只是标签,您是否确保每个文件夹只访问一次?考虑通过对象跟踪访问ID,并且只遍历对象中尚未存在的文件夹。