Подтвердить что ты не робот

Какой правильный способ найти файлы по "полному пути" в Google Диске API v2

дорогой все

Я пытаюсь найти список документов по "полный путь". И, прочитав ссылку API, это сложная задача. Предположим, что мой путь - это что-то вроде /path 0/path1/path2/...

  • Список дочерних элементов корневой папки и найти всех детей с именем равно "path0" и поместить их в список "result0"
  • Найти всех дочерних элементов в "result0" с именем равно "path1" и поместить их в список "result1"
  • Найти всех дочерних элементов в "result1" с именем равно "path2" и...

Вышеприведенный подход кажется очень низким, потому что ему нужно несколько взаимодействий между моим приложением и Диском. Я понимаю, что в Google Диске несколько файлов имеют одинаковое имя файла даже в одной папке. Это будет удобно, если я смогу сделать что-то вроде:

listDocByFullPath("path0/path1/path2")

Возможно ли это с текущей версией SDK Google Диска? Если этого еще нет, мне было интересно, есть ли более простой способ, чем то, что я здесь перечислял.

Кстати, поскольку мое приложение является исключительно вспомогательным сервисом, невозможно использовать сборщик файлов, предоставленный Google.

Приветствия.

4b9b3361

Ответ 1

В отличие от обычных файловых систем, файл может находиться в нескольких папках на Диске. Папки очень похожи на то, что на этикетках. Поэтому обычные пути не всегда работают внутри нашей абстракции. Я предлагаю вам следовать логике ниже:

  • Список файлов с q = 'root' in parents and title = 'path0' and mimeType = 'application/vnd.google-apps.folder' и выберите первый результат.
  • Если есть соответствующий результат, получите идентификатор папки и выполните другой список с помощью '<id of path0>' in parents and title = 'path1' and mimeType='application/vnd.google-apps.folder' и выберите первый результат.
  • Продолжайте, пока не дойдете до целевой папки.

Ответ 2

Самая большая проблема заключается в том, что путь не однозначно идентифицирует файл или папку! Например, в веб-интерфейсе вы можете сделать 2 папки с тем же именем, что и дети одной и той же папки. т.е. вы можете создать дерево, которое выглядит следующим образом: root |-somefolder |-somefolder