首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动查找并永久删除google Drive中的废纸篓

自动查找并永久删除google Drive中的废纸篓
EN

Stack Overflow用户
提问于 2018-01-19 02:27:51
回答 3查看 1.6K关注 0票数 2

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

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

我已经成功地从另一个问题运行了this,但它对我的目标没有帮助。

我本质上是在寻找一个脚本,它列出了我拥有的标记为垃圾的文件,然后永久删除它们。

非常感谢您的帮助

EN

回答 3

Stack Overflow用户

发布于 2019-09-12 21:24:51

“我在google驱动器上有数千个文件,我已经删除了这些文件,并将它们发送到垃圾桶。我的问题是,在清空垃圾桶之后,它们还在显示。”

在第二句话中,值得注意的是,当使用Google API (例如使用rclone)甚至使用Google自己的web界面时,在发出任何“清空垃圾桶”指令到Google Drive实际操作它之间总是有延迟的。Bin中的文件越多、越小,Bin被完全清除所需的时间就越长。数以千计的非常小的文件可能需要相当长的时间。你无法控制Google Drive何时真正开始删除,也无法控制它在回收站中的工作速度。

任何熟悉垃圾收集的人都会确切地理解我的意思--“你不知道主人什么时候来”,就像我的牧师爸爸恼火地说的那样:D。

您可以自己演示此行为,方法是将大量文件“移除”到回收站,在web浏览器中显示回收站,然后发出(例如) "rclone cleanup mydrive:“,这是清空Google Drive回收站的rclone命令(其中mydrive:已配置为指向您的Google Drive)。

首先,您可以观察到,尽管指令已经发出,但在Bin的文件列表开始更改之前,可能需要一段时间,有时,它可能会非常缓慢地遍历列表。

另一件事是,如果你指示web界面清空垃圾箱,它会立即用一个图形替换文件和文件夹的列表,说明垃圾箱是空的。事实上,它不是,因为你会看到,如果你点击“我的驱动器”文件夹,然后立即再次点击回收站-整个列表将像以前一样重新显示,减去Google Drive在此期间删除的任何内容。然而,在后台,Google Drive将加速以删除您的文件。

另一件事也是,在最初的“清空Bin”指令发出后,任何进一步被移至Bin的文件和文件夹都将需要后续命令才能永久删除-它们将不会被第一个命令覆盖。同样,当第一个“清空垃圾桶”正在进行时,您可以通过将项目移至垃圾桶来向自己演示这一点-最终您将得到一个包含第二批移除内容的垃圾箱。

我只是认为指出这一点是值得的(你可能不同意:D ),因为我过去也曾试图清空我的垃圾桶,并认为Google Drive什么也做不了。

编辑:对此编辑深表歉意。我的意思是说,一旦你发出"rclone cleanup:“命令,如果你使用"rclone about mydrive:",它报告的其中一个统计信息是Bin中的文件使用的总空间。通过定期发出"rclone about...“您可以看到Bin每次使用的空间量都在减少。这通常是检查“永久删除”命令执行情况的更好方法,因为Google Drive已经认为这些文件已经消失了,尽管在理论上而不是在实践中。

票数 2
EN

Stack Overflow用户

发布于 2018-01-19 10:48:06

Cooper的方法对我来说失败了。

代码语言:javascript
运行
复制
files.hasNext()

不会遍历回收站项目。Cooper确实向我指出了高级Google Services API:

代码语言:javascript
运行
复制
//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();
};

如果你想看看你删除了多少配额,你可以这样做。

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2018-01-19 04:16:59

试试这个:

代码语言:javascript
运行
复制
function delTrashedFiles() {
  var files=DriveApp.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    if(file.isTrashed()) {
       Drive.Files.remove(file.getId())
     }
  }
}

您将需要启用驱动器API

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48328000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档