我在脚本下面运行,但是出现错误消息“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());
}
}
答案 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进行迭代的示例。