Google apps script 谷歌应用程序脚本在30分钟后超时
我正在运行下面的脚本,但它会出错并显示一条错误消息“超时”,因为我提供的文件夹Id下有很多文件夹 有人能帮我优化它或替代方法吗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
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,并且只遍历对象中尚未存在的文件夹。