因为在V3中,孩子们被弃用了,我正试图通过另一种方式在父文件夹中搜索(使用父ID)并将所有子项都放在子文件夹中。 没有找到如何在驱动器文档中执行此操作的方法。 请指教。
答案 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));
但是似乎不可能一次获得所有(授予)子文件夹。