Какой правильный способ найти файлы по "полному пути" в Google Диске API v2
дорогой все
Я пытаюсь найти список документов по "полный путь". И, прочитав ссылку API, это сложная задача. Предположим, что мой путь - это что-то вроде /path 0/path1/path2/...
- Список дочерних элементов корневой папки и найти всех детей с именем равно "path0" и поместить их в список "result0"
- Найти всех дочерних элементов в "result0" с именем равно "path1" и поместить их в список "result1"
- Найти всех дочерних элементов в "result1" с именем равно "path2" и...
Вышеприведенный подход кажется очень низким, потому что ему нужно несколько взаимодействий между моим приложением и Диском. Я понимаю, что в Google Диске несколько файлов имеют одинаковое имя файла даже в одной папке. Это будет удобно, если я смогу сделать что-то вроде:
listDocByFullPath("path0/path1/path2")
Возможно ли это с текущей версией SDK Google Диска? Если этого еще нет, мне было интересно, есть ли более простой способ, чем то, что я здесь перечислял.
Кстати, поскольку мое приложение является исключительно вспомогательным сервисом, невозможно использовать сборщик файлов, предоставленный Google.
Приветствия.
Ответы
Ответ 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