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

问题描述 投票:0回答:3

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

search google-drive-sdk children
3个回答
1
投票

以下适用于我:

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));

但是,立刻获得所有(授权)子文件夹似乎不可能。


0
投票

很遗憾,Drive API没有“返回FOLDER_NAME的所有子级”等搜索过滤器。唯一可用的搜索查询可在Search for Files中找到。

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

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

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

使用搜索查询

'123456789' in parents

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

Files.list Try-it一个测试。


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; 
}
© www.soinside.com 2019 - 2024. All rights reserved.