2

我是否犯了一个简单的错误,或者我们不能在 DriveApp 上使用 .searchFiles 方法搜索文件夹?我有一个更复杂的搜索参数,但我已经为这个例子简化了它。

function getFolders()
{
  var searchParams = 'mimeType = "application/vnd.google-apps.folder"';    
  var searchFiles = DriveApp.searchFiles(searchParams);
  if (searchFiles.hasNext())
  {
    // Do Something
  }
  else
  {
    // Error
    Logger.log("No folders found");
  }
}

该文档声明它返回一个 FileIterator 但参考 Google Drive SDK 以获取更多信息 https://developers.google.com/apps-script/reference/drive/drive-app#searchFiles(String)

在这里的搜索参数中,我们可以指定它是否是一个文件夹 https://developers.google.com/drive/search-parameters

是否有搜索文件夹名称的选项?

4

2 回答 2

4

搜索文件方法只返回文件。根据 GAS API,此方法用于“获取当前文件夹的所有子文件并与给定搜索条件匹配的文件的集合”。在这里看到它。

要按名称查找文件夹,请使用以下代码:

function getFolders(folderName)
{      
  var folders = DriveApp.getFolders();     
 while (folders.hasNext()) {
   var folder = folders.next();
   if(folderName == folder.getName()) {         
     return folder;
   }
 }
  return null;
}
于 2013-06-11T12:53:37.460 回答
-1

最终使用 DocsList 而不是 DriveApp

https://developers.google.com/apps-script/reference/docs-list/docs-list#getAllFolders()

br araujo的上述解决方案回答了原始问题,因此我将其标记为答案。

使用 DocsList 的问题是它返回的文件夹类型与 DriveApp 不兼容。为了使它们兼容,我们只需在函数调用之间传递 Id 而不是对象。

于 2013-06-13T00:14:30.200 回答