2013-04-24 3 views
14

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

Мы используем область «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. Ошибка остается.

Update: Я мог отслеживать его вниз к проблеме с пейджинговой и параметром 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» (см. Listing files with search query returns out-of-scope results (drive.files.list call, using drive.files scope)). Это оказалось легким решением. Возможно, эта проблема связана.

+0

Звучит как ошибка, мы смотрим на нее. –

+0

@BurcuDogan Есть ли какие-либо обновления по этому поводу? Есть ли страница изменений, которую я могу проверять время от времени, чтобы проверить, исправлено ли это? – auval

+0

Есть ли какие-либо обновления по этой проблеме? Мы неоднократно повторяем эту проблему с ненадежными списками файлов, в то время как мы расширяем интеграцию нашего приложения с Google Диском. – Lenau

ответ

0

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

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

Смежные вопросы