Как рекурсивно читать подпапки после указания «AFolder» у родителей? - PullRequest
0 голосов
/ 29 января 2020

В основном, в Google Drive API я пытаюсь прочитать указанную папку на диске.

Например, root / Temp / TestFiles / AreInHere

I Я хочу прочитать все файлы в 'AreInHere', и я могу сделать это, используя запрос, указывающий идентификатор моей желаемой папки. Например, '' 'AreInHere' у родителей '.

. Это работает нормально и, как и ожидалось, id, также возвращает все подкаталоги в моей папке, но не получает никаких файлов. с этими подкаталогами?

Я посмотрел ссылку на API и всю документацию по поиску, но не смог найти что-нибудь OOTB.

Любая помощь или совет очень важны.

Заранее спасибо

1 Ответ

1 голос
/ 29 января 2020

К сожалению, с помощью Drive API нет способа автоматически выводить список файлов, содержащихся в дочерних папках.

Вместо этого вам нужно использовать рекурсивную функцию, которая динамически находит все подпапки и подпапки подпапок - независимо от того, какое число уровней есть.

Что помогает сделать вашу жизнь проще: динамическое указание id родительского элемента в качестве параметра запроса q и запрос mimeType файла.

Вы не указываете свой язык, но, например, в Apps Script вы можете сделать что-то вроде этого:

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