自动查找并永久删除; google云端硬盘中已删除的项目

时间:2018-01-18 18:27:51

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

我在google驱动器上有数千个文件,我已将其删除发送到垃圾箱。我的问题是他们在清空垃圾后仍然出现。

清空垃圾桶根本不起作用。我可以删除项目和减少配额的唯一方法是使用is:trashed搜索运算符搜索项目,永久删除它们,除非这需要永远,我不知道如何使用驱动器api自动执行此操作。

我已成功从另一个问题中运行this,但这对我的事业没有帮助。

我基本上是在一个脚本之后,列出了我拥有的标记为trashed的文件,然后永久删除它们。

任何帮助非常感谢

3 个答案:

答案 0 :(得分:1)

库珀的方法对我失败了。

files.hasNext()

不会遍历垃圾邮件。 Cooper确实指出了我在高级Google服务API:

//This method requires adding the Advanced Google Services Drive API under Resources -> Advanced Google Services
//And the Google API Console[https://console.cloud.google.com/apis/library/drive.googleapis.com/]
function DeleteTrashedFiles(){
  Drive.Files.emptyTrash();
};

如果您想要查看删除的配额量,可以执行此操作。

function DeleteTrashedFilesLogged(){
  // Enable Drive.About.get() fields here:
  // https://developers.google.com/apis-explorer/?hl=en_US#p/drive/v3/
  var lngBytesInTrash = Drive.About.get().quotaBytesUsedInTrash;
  var filesDrive = Drive.Files;
  Logger.log('Attempting to clean up ' + lngBytesInTrash + ' bytes');
  filesDrive.emptyTrash();
  Logger.log('Trash now contains ' + Drive.About.get().quotaBytesUsedInTrash + ' bytes');
  filesDrive = Drive.Files;
};

答案 1 :(得分:0)

试试这个:

function delTrashedFiles() {
  var files=DriveApp.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    if(file.isTrashed()) {
       Drive.Files.remove(file.getId())
     }
  }
}

您需要启用Drive API

答案 2 :(得分:0)

“我在Google驱动器上有成千上万个已删除的文件已发送到垃圾箱。我的问题是,清空垃圾箱后它们仍然显示出来。”

仅需注意第二句话,值得一提的是,当使用Google API(例如,使用rclone)或什至使用Google自己的网络界面时,在发出任何“清空Bin”指令与Google云端硬盘实际上正在采取措施。并且Bin中的文件越多,文件越小,将Bin完全清除所需的时间就越长。成千上万的小文件可能需要花费相当长的时间。而且,您无法控制Google云端硬盘何时真正开始删除,或者删除它如何通过Bin进行操作。

任何熟悉垃圾收集的人都会确切地理解我的意思-“是的,我不知道主人是在什么时候来的”,正如我的部长爸爸会[讨厌地]说:D

您可以通过将“大量”文件“删除”到Bin中,在Web浏览器中显示Bin,然后发出(例如)“ rclone cleanup mydrive:”(这是将rclone命令清空)的方法来亲自演示此行为。 Google Drive Bin(其中mydrive:已配置为指向您的Google Drive)。

首先,您可以观察到尽管发出了该指令,但是可能需要一段时间才能开始更改Bin的文件列表,有时,它可能会非常缓慢地切换列表。

另一件事是,如果您指示Web界面清空垃圾箱,它将立即用表示垃圾箱为空的图形替换文件和文件夹列表。实际上,事实并非如此,因为您将看到如果单击“我的云端硬盘”文件夹,然后立即再次单击Bin,则整个列表将像以前一样重新显示,减去在此期间Google云端硬盘删除的所有内容。但是,在后台,Google云端硬盘将加速删除您的文件。

另外,另一件事是,在发出最初的“清空箱”指令后被删除到箱中的任何其他文件和文件夹,将需要后续命令才能永久删除它们-它们不会被第一个命令覆盖。再一次,您可以通过在第一个“清空垃圾箱”进行时将物品移到垃圾箱中来向自己展示这一点-最终,您将剩下一个包含第二批清除物品的垃圾箱。

我只是认为有必要指出这一点(您可能不同意:D),因为我过去也曾尝试清空我的Bin,并认为Google云端硬盘没有做任何事情。

编辑:抱歉。我的意思是说,一旦发出“ rclone cleanup mydrive:”命令,然后再使用“ rclone about mydrive:”,它报告的统计数据之一就是Bin中文件使用的总空间。通过定期发出“ rclone about ...”,您可以看到Bin每次使用的空间减少。这通常是检查“永远删除”命令进展情况的更好方法,因为Google云端硬盘已将这些文件视为已丢失,尽管是理论上的,而不是实践上的。