搜索父文件夹google drive api中的所有子项

时间:2017-08-25 02:03:40

标签: search google-drive-api children

因为在V3中,孩子们被弃用了,我正试图通过另一种方式在父文件夹中搜索(使用父ID)并将所有子项都放在子文件夹中。 没有找到如何在驱动器文档中执行此操作的方法。 请指教。

3 个答案:

答案 0 :(得分:0)

很遗憾,Drive API没有类似&#34的搜索过滤器;返回FOLDER_NAME的所有孩子"。唯一可用的搜索查询位于Search for Files

但是,您可以使用一些类似的过滤器,但这一次,使用父文件夹的ID。这也适用于子文件夹。

例如,您拥有包含文件的父文件夹的URL。

https://drive.google.com/drive/folders/123456789

使用搜索查询

'123456789' in parents

它将返回该文件夹中的所有文件。

Files.list Try-it一个测试。

答案 1 :(得分:0)

也许你可以使用这2个函数..

/**
 * Export Array Files N' Folder Names from Drive Folder 
 */
function listCurFoldersEFilesName(folderId) {

   var data= [];
   var j =0 , i = 0;

   var folders = DriveApp.getFolderById(folderId).getFolders(); //returns a FolderInterator

   while (folders.hasNext()) {
     var folder = folders.next();
     var folderName = folder.getName();
     data[j] = folderName.trim();
     j++;
   }

   var files = DriveApp.getFolderById(folderId).getFiles(); //returns a FileInterator

   while (files.hasNext()) {
     var file = files.next();
     var fileName = file.getName();
     data[j+i] = fileName.trim();
     i++;
   }
   return data; 
}

/**
 * Export Array Files N' Folder IDs from Drive Folder 
 */
function listCurFoldersEFilesIDs(folderId) {

   var data= [];
   var j =0 , i = 0;

   var folders = DriveApp.getFolderById(folderId).getFolders(); //returns a FolderInterator

   while (folders.hasNext()) {
     var folder = folders.next();
     var infolderId = folder.getId();
     data[j] = infolderId;
     j++;
   }

   var files = DriveApp.getFolderById(folderId).getFiles(); //returns a FileInterator

   while (files.hasNext()) {
     var file = files.next();
     var infileId = file.getId();
     data[j+i] = infileId;
     i++;
   }
   return data; 
}

答案 2 :(得分:0)

以下对我有用:

function getChildFolders(folderId){
 
  var q = "mimeType = 'application/vnd.google-apps.folder' and '"+folderId+"' in parents";
  var children = Drive.Files.list({q:q});
  var res = [];
  
  for(var i=0; i<children.items.length; i++){
    res.push(children.items[i].title);
    res = res.concat(getChildFolders(children.items[i].id));
  }
  
  return res;
  
}

Logger.log(getChildFolders(rootId));

但是似乎不可能一次获得所有(授予)子文件夹。