在父母中指定“ AFolder”后如何递归读取子文件夹?

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

基本上,在Google Drive API中,我正在尝试读取驱动器中的指定文件夹。

例如root / Temp / TestFiles / AreInHere

我想读取“ AreInHere”中的所有文件,我可以通过使用查询指定所需文件夹的ID来执行此操作。例如。 ‘’‘AreInHere’in父母’

这可以正常工作,并且符合ID的预期,它还返回我的文件夹中的所有子目录,但不会隐式地获得包含这些子目录的任何文件?

我看过API参考和所有用于搜索的文档,但是没有找到任何OOTB的运气。

非常感谢任何帮助或建议。

提前感谢

google-api google-drive-api
1个回答
0
投票

不幸的是,使用Drive API无法自动列出子文件夹中包含的文件

相反,您需要使用一个递归函数,该函数动态查找所有子文件夹和子文件夹的子文件夹-无论级别数是多少。

[使您的生活更轻松的是将父级的id动态指定为query parameter q,并查询文件的mimeType

您未指定语言,但例如在Apps脚本中,您可以执行以下操作:

function myFunction() {
  var id = "SPECIFY HERE THE ID OF THE PARENT FOLDER";
  iterate(id);

}

function iterate(id){
  var q = "'" + id + "' in parents"
  var files= Drive.Files.list({"q": q}).items;
  if (files.length>0){
    for ( var i = 0; i < files.length; i++){
      Logger.log(files[i].title);
      Logger.log(files[i].mimeType);
      if(files[i].mimeType=="application/vnd.google-apps.folder"){
        id = files[i].id;
        iterate(id);
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.