从GDrive垃圾桶中删除文件

问题描述 投票:0回答:1

我有备份脚本,它正在将我的文件复制到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中删除 "的方法。

google-apps-script google-drive-api recycle-bin
1个回答
0
投票

应用脚本 DriveApp 不支持,但你可以用Drive API v3来实现。作为 文件 州,你需要使用 DELETE HTTP方法;同样,你甚至可以完全跳过这些文件的销毁。这里有一个 例子 (我的)如何使用Google API与AppScript(那是另一个API,但至少它是一个好的起点)。文档结合一个粗略的例子,希望能把你推向正确的方向。


0
投票
Gmail.Users.Messages.batchDelete(['array of messageids'], "me");

阅读


0
投票

来自 文件注意: 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的垃圾桶上,我没有权限访问时,我确实遇到了这个脚本的问题,但我会尝试在另一个问题中获得更多帮助。如果需要,我会更新这个答案。

© www.soinside.com 2019 - 2024. All rights reserved.