如何使用Google AppScript删除Google云端硬盘中的特定文件夹

时间:2015-11-25 17:32:18

标签: google-apps-script google-drive-api

如果你只是想删除一个文件夹,没什么特别的,你可以使用它。

var folderIteratorName = DriveApp.getRootFolder().getFoldersByName("Folder Name"); // folder iterator
folderIteratorName.next().setTrashed(true);

背景信息如下。 DriveApp getFolder方法返回一个Folder Iterator,其文档只提供三种方法。在那里没有提到的是你必须调用.next()方法,即使迭代器在这种情况下只有一个项目,实际获取文件夹,然后你可以调用setTrashed(true)来摆脱它

我在两天内找不到这个简单问题的答案,直到ScampMichael在一个切线相关的问题中遇到了一些代码。

function myFunction() {
var files = DriveApp.getFilesByName('data');
 while (files.hasNext()) {
   files.next().setTrashed(true);
   }
  }

文件夹的文档列出了removeFolder(child)作为选项,但是没有明确说明如何实际调用它,因为文档中提供的任何DriveApp,Folder或FolderIterator类的示例都很少。

DriveApp.removeFolder("folder name");

不起作用,因为removeFolder需要'child'。从概念上讲,大多数程序员都知道孩子是什么,但是找到“子”数据结构的文档或者为该方法指定它的准确性在文档中没有明确说明,也没有提供任何示例。

如果有人有更优雅的解决方案,请分享。我已经提出这个问题并主要针对其他有类似问题的人来回答我发现他们至少有一种方法可行。

1 个答案:

答案 0 :(得分:1)

您无需使用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());
};