如何使用Google Apps脚本搜索文件夹

时间:2013-06-11 05:58:25

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

我是否犯了一个简单的错误,或者我们不能在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

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

3 个答案:

答案 0 :(得分:3)

搜索文件方法只返回文件。根据GAS API,这个方法用于“获取当前文件夹的所有子文件的集合,并匹配给定的搜索条件。”见here

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

function getFolders(folderName)
{      
  var folders = DriveApp.getFolders();     
 while (folders.hasNext()) {
   var folder = folders.next();
   if(folderName == folder.getName()) {         
     return folder;
   }
 }
  return null;
}

答案 1 :(得分:2)

答案 2 :(得分:0)

使用DocsList而不是DriveApp

结束

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

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

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