Files.list() воспроизводимо возвращает неполный список в области "drive.files" - программирование
Подтвердить что ты не робот

Files.list() воспроизводимо возвращает неполный список в области "drive.files"

Наше приложение нуждается в полном списке пользовательских файлов и папок. Мы используем files.list() через библиотеку Javascript (по существу такой же код, как показано в официальном API reference в качестве примера).

Мы используем область "drive.files".

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

  • Файлы явно существуют. Они отображаются в Google Drive Webapp и, если я явно запрашиваю их через ID, я могу получить их через API без проблем.
  • Он воспроизводимый, всегда одни и те же файлы отсутствуют.
  • Это не преходяще. Я пробовал на следующий день и все те же файлы отсутствуют. Я знаю несколько странных эффектов в API, которые уходят через некоторое время, но не это.
  • Это не одно время (например, некоторые странные вещи поступили не так во время загрузки). Если я повторяю с совершенно другой учетной записью Google, файлы снова отсутствуют. Из небольшого набора из 147 загруженных файлов в одном тесте 4 пропускается вызов files.list, в другом тесте с теми же 147 файлами на другой учетной записи отсутствуют 23 файла.
  • Это происходит только тогда, когда я использую область drive.files. Если я уменьшу область действия до drive, будут возвращены все файлы. Если посмотреть на "Детали" в Google Диске Webapp, то отсутствующие файлы будут отображаться как созданные нашим Приложением. Похоже, что они каким-то образом потеряли свое происхождение.
  • Это также происходит, когда я указываю поисковый запрос. Если я вызываю файлы .list с поисковым термином "q: modifiedDate" '2012-06-04T12: 00: 00' ", который также должен возвращать все файлы, те же файлы отсутствуют.
  • Я повторил то же самое, что и чистый REST-вызов API, чтобы исключить, что это проблема с библиотекой Javascript. Ошибка остается.

Обновление: Я мог бы отследить его до проблемы с пейджингом и параметром maxResults. Если я использую разные значения, API возвращает другое количество элементов:

С maxResults=100 я получаю 100 + 100 + 7 = 207.

С maxResults=99 я получаю 99 + 99 + 28 = 226.

С maxResults=101 получается 101 + 101 + 0 = 202.

Последний результат интересен, который дал мне nextLink, указав, что результатов больше, но массив элементов в последнем ответе был фактически пуст. Это может указывать на ошибку.

Тем не менее, это происходит только в области drive.file, подсчеты согласуются в полной области drive.

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

Еще одно примечание. У нас были другие проблемы с областью "drive.files" (см. Листинг файлов с поисковым запросом возвращает результаты вне области (drive.files.list вызов с использованием области drive.files)). Это оказалось легким решением. Возможно, эта проблема связана.

4b9b3361

Ответ 1

Есть ли разница в файлах, принадлежащих мне "shared to me" и собственных файлах/папках, была проблема для меня? То, как оно представлено на Google Диске, было не таким же результатом, который я получил при поиске без правильных флагов.

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