我有备份脚本,它正在将我的文件复制到GDrive中,而且它也在删除超过X天的文件。但这使我的垃圾箱中充满了大量的这些文件。我想把它们从垃圾箱中删除。
我写了这段代码。
function getTrashedFiles() {
//find every file in bin
var trashedSearch = DriveApp.searchFiles('trashed=true');
while (trashedSearch.hasNext()) {
var file = trashedSearch.next();
if (file.getName().indexOf("DBKLP") >= 0) {
//this is correctly printing files that I want to remove
Logger.log(file.getName());
//this should remove from bin
DriveApp.removeFile(file);
}
}
}
这段代码正确地找到了所有以 "DBKLP "开头的文件。但是当它运行时,它并没有从垃圾箱中删除文件。它只是 "再次 "删除它们,所以它们的删除日期基本上是 "现在"。
我找不到 "从bin中删除 "的方法。
Gmail.Users.Messages.batchDelete(['array of messageids'], "me");
来自 文件注意: removeFile(child)不会删除文件,但如果一个文件从其所有父文件中删除,则无法在 Drive 中看到该文件,除非通过搜索或使用 "所有项目 "视图。
您是否尝试过 Drive.Files.remove()
而不是 DriveApp.removeFile()
要启用它,在脚本编辑器中,导航到资源> 高级谷歌服务> 驱动API。
我有一个类似的脚本,似乎可以工作。请注意,它必须找到所有文件 和 文件夹,因为它们是分开处理的。
// Delete all files from trash older than 1 month
function cleanOldTrash() {
var files = DriveApp.getTrashedFiles();
var folders = DriveApp.getTrashedFolders();
var lastMonth = new Date();
lastMonth.setDate(lastMonth.getDate() - 30);
while (files.hasNext()) {
var file = files.next();
if (file.getLastUpdated() < lastMonth ) {
Drive.Files.remove(file.getId());
}
}
while (folders.hasNext()) {
var folder = folders.next();
if (folder.getLastUpdated() < lastMonth) {
Drive.Files.remove(folder.getId());
}
}
}
实际上,当文件存储在Team Drives的垃圾桶上,我没有权限访问时,我确实遇到了这个脚本的问题,但我会尝试在另一个问题中获得更多帮助。如果需要,我会更新这个答案。