定期从Google云端硬盘废纸篓中删除特定类型的所有文件

时间:2018-04-15 23:41:18

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

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

在Google云端硬盘上,已删除的文件最终会被丢弃,很快就会占用大量的云端硬盘空间。

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

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

然而,最新的方式是请求所有.lxbd文件在TRASH中的数组,然后删除它们? (最好不要循环浏览所有GD文件)

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 不要将旧的.lxbd文件移动到“废纸篓”,只需立即删除它们即可。来自Apps脚本,启用"高级服务" Drive,这将是Drive.Files.remove(file.id);
  2. Query使用list特定文件类型的已删除文件,然后为每个文件类型调用Drive.Files.remove
  3. Google Apps脚本中云端硬盘"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项目,您将需要包含其他参数,并且如果您需要无差错操作,还必须进行其他检查。