Я пытаюсь собрать все файлы и папки, которые являются потомками данной папки.files.list() возвращает неполный список при поиске q = 'FOLDER_ID' в родительском
Для этого я использую file.list() с q="'FOLDER_ID' in parent" and trashed=false
с FOLDER_ID, являющимся идентификатором интересующей меня папки. По мере обработки результатов я отслеживаю все папки, которые возвращаются из этого запроса, а затем повторите вызов files.list(), используя новые папки в параметре q
. Я объединяю несколько папок в один запрос с помощью or
и продолжаю повторять это до тех пор, пока новые папки не будут возвращены.
Пример:
Initial Запрос: q="('FOLDER_ID' in parent) and trashed=false"
Все последующие запросы: q="('FOLDER_ID_1' in parent or 'FOLDER_ID_2' in parent or 'FOLDER_ID_3' in parent ...) and trashed=false"
(Для получения дополнительной информации о создании запросов см Drive REST API - Search for Files)
Иногда это возвращает все папки должно и в других случаях некоторые из них отсутствуют. Этого не происходит, если я удаляю параметр q
, когда возвращаются каждый файл и папка, но отсутствуют.
После некоторых испытаний/испытаний и ошибок я обнаружил, что если я не получаю все папки, которые я должен быть, отправка запроса без q
, похоже, «исправить» проблему. В следующий раз, когда я запустил свое приложение, и он использует q
, все правильные папки возвращаются.
Другая информация:
Это не проблема с разрешениями, я использую
drive.readonly
Это не
pageSize
вопрос, как я пробовал разные значения для этого и получить разные результаты.Это не вопрос
pageToken
, так как я обязательно отправлю запрос с указаннымnextPageToken
, когда он существует.Я запускаю это в папке с чуть менее чем 4000 папками потомков и чуть менее чем 25 000 потомков.
Я чувствую, как это должно быть ошибка, связанная с использованием нескольких папок в параметре q
в одном запросе, учитывая, что я могу выполнить тот же самый процесс и получить разные результаты, казалось бы, случайно.
Спасибо за предложение. Просто выборка папок сначала кажется разумной альтернативой. Тем не менее, я не чувствую, что это должно быть необходимо на основе документации и руководств Google для Drive API, и я не думаю, что это намного проще, поскольку в обоих сценариях мне нужно построить иерархию памяти. Кроме того, полагайте, что это не займет много времени, чтобы завершить этот процесс, как правило, около 1 минуты с <100 вызовов приводов. – dunkmann00
Попробуйте. Тебе понравится. Другим трюком будет обновление каждой папки, чтобы сделать ее прямым потомком фиктивного родителя. Имейте в виду, что диск не обеспечивает иерархию, поэтому ваша рекурсия должна защищать от кругового набора отношений. – pinoyyid
Я проверю это. Я действительно думаю, что идея памперской папки звучит неплохо. Но в моей ситуации папки не создаются приложением, так что это не реально. Я также пытался сделать это очень общим сценарием, который мог бы работать в любой ситуации, поэтому я предпочел бы держаться подальше от этого. – dunkmann00