Tom*_*Tom 3 google-apps-script google-drive-api
如果您只是想删除一个文件夹,没什么特别的,您可以使用它。
var folderIteratorName = DriveApp.getRootFolder().getFoldersByName("Folder Name"); // folder iterator
folderIteratorName.next().setTrashed(true);
Run Code Online (Sandbox Code Playgroud)
背景信息如下。DriveApp getFolder 方法返回一个文件夹迭代器,其文档只提供了三个方法。其中没有提到的是,即使迭代器在本例中只有一项,您也必须调用 .next() 方法才能实际获取文件夹,然后您可以调用 setTrashed(true) 来删除它。
我两天都找不到这个简单问题的答案,直到我在一个与切线相关的问题中遇到了 ScampMichael 的一些代码。
function myFunction() {
var files = DriveApp.getFilesByName('data');
while (files.hasNext()) {
files.next().setTrashed(true);
}
}
Run Code Online (Sandbox Code Playgroud)
Folder 的文档将removeFolder(child) 列为一个选项,但没有明确如何实际调用它,因为文档中提供的任何DriveApp、Folder 或FolderIterator 类的示例很少。
DriveApp.removeFolder("folder name");
Run Code Online (Sandbox Code Playgroud)
也不起作用,因为removeFolder需要一个“子”。从概念上讲,大多数程序员都知道子项是什么,但文档中并未明确说明“子项”数据结构是什么或如何精确地为该方法指定它,也没有提供任何示例。
如果有人有更优雅的解决方案,请分享。我提出这个问题和答案主要是为了其他与我有类似问题的人找到这样他们至少有一种有效的方法。
你不需要使用getRootFolder().
除此之外,没有更好、更快的方法来删除带有DriveApp. 在 Google 云端硬盘中,您可以使用完全相同的名称来命名文件和文件夹。您可以有 100 个文件夹,全部命名为“我的文件夹”。您可以有 500 个名为“无标题电子表格”的文件。这就是为什么必须有文件夹迭代器和文件迭代器。
function deleteFolder(folderName) {
if (folderName===undefined) {
folderName = "Test"
};
var folderToDelete = DriveApp.getFoldersByName(folderName).next();
var returnedFolder = folderToDelete.setTrashed(true);
Logger.log('returnedFolder is trashed: ' + returnedFolder.isTrashed());
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5883 次 |
| 最近记录: |