【问题标题】:Periodically remove all files of certain type from Google Drive Trash定期从 Google 云端硬盘回收站中删除所有特定类型的文件
【发布时间】:2023-04-09 12:42:01
【问题描述】:

我将一些数据库文件自动备份到我的谷歌驱动器。备份例程将新的 db 文件 (.lxdb) 添加到特定文件夹并删除旧的。

在 Google 云端硬盘上,已删除的文件最终会进入垃圾箱,很快就会耗尽数 GB 的云端硬盘空间。

有 GA 脚本可以定期清空垃圾箱,但是,我只想删除该特定文件类型,因为出于安全原因将所有其他文件保留在垃圾箱中是有意义的。

function DeleteTrashedFiles(){
  Drive.Files.emptyTrash();
};

但是,在 TRASH 中请求所有 .lxbd 文件的数组然后删除它们的最先进的方法是什么? (最好不要循环浏览所有 GD 文件)

【问题讨论】:

  • "Files: emptyTrash" of Drive API has no options. 它只是删除垃圾箱中的所有文件。因此,仅使用“文件:emptyTrash”无法删除特殊文件。如果您想使用“文件:emptyTrash”删除特殊文件,作为一种解决方法,它可以认为它在从垃圾箱中撤出其他文件后删除它们,并将撤出的文件返回到垃圾箱。如果这不是您想要的,我很抱歉。

标签: javascript file google-apps-script google-drive-api recycle-bin


【解决方案1】:

你有两个选择:

  1. 与其将旧的.lxbd 文件移至回收站,不如立即删除它们。从 Apps 脚本,启用“高级服务”Drive,这将是 Drive.Files.remove(file.id);
  2. Querylist 指定文件类型的已删除文件,然后为每个文件调用 Drive.Files.remove

Google Apps 脚本中 Drive "Advanced Service" 的选项 2 示例:

function deleteTrashedFiletype(someMimetype) {
  var options = {
    q: "trashed=true AND mimeType='" + someMimetype + "' AND '" + Session.getActiveUser().getEmail() + "' in owners",
    pageToken: null
  };
  do {
    var result = Drive.Files.list(options);
    result.items.forEach(function (file) {
      if(file.mimeType === someMimetype)
        Drive.Files.remove(file.id);
      else throw new Error("The query returned the wrong mimetype");
    });
    options.pageToken = result.nextPageToken;
  } while(options.pageToken);
}

如果您正在处理 Team Drive 项目,您将需要包含其他参数,并且如果您需要无错误操作,则必须进行其他检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多