我在google驱动器上有数千个文件,我已经删除了这些文件并将其发送到垃圾桶。我的问题是他们在清空垃圾桶后仍然出现。
清空垃圾桶根本行不通。我可以删除项目和减少配额的唯一方法是使用is :垃圾桶搜索操作符搜索项目,这样永久删除它们,除非这需要很长时间,而且我不知道如何使用驱动器api自动执行此操作。
我已经成功地从另一个问题运行了this,但它对我的目标没有帮助。
我本质上是在寻找一个脚本,它列出了我拥有的标记为垃圾的文件,然后永久删除它们。
非常感谢您的帮助
发布于 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已经认为这些文件已经消失了,尽管在理论上而不是在实践中。
发布于 2018-01-19 10:48:06
Cooper的方法对我来说失败了。
files.hasNext()
不会遍历回收站项目。Cooper确实向我指出了高级Google Services 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;
};
发布于 2018-01-19 04:16:59
试试这个:
function delTrashedFiles() {
var files=DriveApp.getFiles();
while(files.hasNext()) {
var file=files.next();
if(file.isTrashed()) {
Drive.Files.remove(file.getId())
}
}
}
您将需要启用驱动器API
https://stackoverflow.com/questions/48328000
复制相似问题