30分钟后Google App脚本超时

时间:2018-05-04 18:28:17

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

我在脚本下面运行,但是出现错误消息“Timed Out”错误,因为我给的文件夹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());
  }
}

2 个答案:

答案 0 :(得分:0)

好像你正在递归删除文件夹。尝试在递归调用后移动removeFolder调用。否则,您在调用getFolders之前删除该文件夹,这就是我认为它超时的原因。

像这样:

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

resursive函数的终止条件是没有子文件夹,即你在叶子文件夹中。

请参阅this related answer to a question about recursive deletion of a binary tree

答案 1 :(得分:0)

我认为在这种情况下的解决方案可能是使用getContinuationToken() 并且在stackoverflow上的另一个answer中提供了使用continuationToken进行迭代的示例。