gpt4 book ai didi

javascript - DriveApp.removeFile 的真正目的是什么?

转载 作者:行者123 更新时间:2023-11-29 21:00:53 24 4
gpt4 key购买 nike

Google AppScript 是一项非常有用的服务,但有一种我不了解的文件删除机制。同样的讨论适用于文件夹删除。我有 replied some questions on SO where file removal was required , 但还有一些我不清楚的地方。

DriveApp documentation解释方法 DriveApp.removeFile:

Removes the given file from the root of the user's Drive. This method does not delete the file, but if a file is removed from all of its parents, it cannot be seen in Drive except by searching for it or using the "All items" view.

我试着用像这样的一些测试脚本来检查这种方法的行为:

function remove() {
var files = DriveApp.getFilesByName("file_to_remove");
while (files.hasNext())
DriveApp.removeFile(files.next());
}

但此代码的结果是仅从我的云端硬盘网络界面(我没有使用客户端)视觉上删除该文件,但该文件(来自文档)仍然存在于“所有项目”。

另一种删除文件的方法是将其设置为已删除,因此它实际上是在我第一次手动清除垃圾箱时删除的:

function trash() {
var files = DriveApp.getFilesByName("file_to_remove");
while (files.hasNext())
files.next().setTrashed(true);
}

但是,我仍然不喜欢这种方法(该文件仍在使用我的部分 - 极其有限的 :P - 配额)。

最后一种方法(我现在正在使用的方法)使用高级 Google 服务,例如:

function advanced_remove() {
var files = DriveApp.getFilesByName("file_to_remove");
while (files.hasNext())
Drive.Files.remove(files.next().id);
}

但我不喜欢的是服务的使用(操作次数有限)。也可以通过 Drive 对象清空垃圾箱(Drive.emptyTrash(),如果我使用前面的示例)

恕我直言,文件删除是一项非常基本的操作,应该可以通过标准的 DriveApp API 进行操作,而不是通过采用无法完全删除文件或需要我手动清空垃圾箱的不同方法。

我的问题是:

  • removeFile 的真正目的是什么?从其所有父项中删除意味着什么(我假设父项是包含文件的文件夹)?
  • 有没有真正的方法可以完全删除文件而不经过垃圾箱并且不使用高级服务?
  • 我的母语不是英语:也许 Google Developers 已经实现了考虑 "semantic" difference between remove and delete 的方法?

最佳答案

将 Google Drive“文件夹”视为附加到文件的标签,这是我们在 Gmail 中附加标签的方式。这就是它们的实际情况,它们的功能不像硬盘驱动器上的目录。可能存在一个没有任何标签的文件,或者它可以有多个标签。方法folder.remove(file)从驱动器中删除该文件夹的标签。和 DriveApp.remove(file)除了标签“My Drive”之外,它的作用相同。 “从其所有父项中删除”意味着您从文件中删除所有标签,包括我的云端硬盘。你还有文件。

is there any actual way to remove completely the file without passing by the trash bin and without using advanced services?

不,没有。考虑到脚本是共享的并且其中一些是恶意的,脚本文件删除是一项危险的操作。因此谷歌决定以这种方式限制可能的损害,不允许在没有明确启用高级服务的情况下通过 GAS 彻底删除。

关于javascript - DriveApp.removeFile 的真正目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46564653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com