Я новичок в использовании Google Drive API для Python (v3), и я пытаюсь получить доступ и обновить подпапки в определенной родительской папке, для которой у меня есть fileId. Вот моя сборка для драйвера API:
store = file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('credentials.json',
scope='https://www.googleapis.com/auth/drive')
creds = tools.run_flow(flow, store)
service = build('drive', 'v3', http=creds.authorize(Http()))
Я могу успешно получить доступ к большинству подпапок с помощью files().list()
, но по крайней мере один из них отсутствует в списке возвращенных результатов:
results = service.files().list(
q="parents in '1QXPl6z04GsYAO0GKHBk2oBjEweaAbczw'",
fields="files(id, name), incompleteSearch, nextPageToken").execute()
items = results['files']
Я дважды проверил, и в результатах не было клавиши nextPageToken
, а значение incompleteSearch
было False
, что, я предполагаю, означает, что полный список результатов был возвращен. Кроме того, когда я получил доступ к списку родителей для отсутствующего файла с помощью метода file().get()
, в списке был указан только один родительский элемент в запросе выше:
service.files().get(
fileId='1WHP02DtXfJHfkdr47xSeeRIj0sCrihPA',
fields='parents, name').execute()
и возвращает это:
{'name': 'Sara Gaul -Baltimore Corps docs and schedules',
'parents': ['1QXPl6z04GsYAO0GKHBk2oBjEweaAbczw']}
Другие подробности, которые могут иметь отношение к делу:
- Эта конкретная папка, отсутствующая в списке, была переименована соавтором.
- Я запускаю этот код на ноутбуке Jupyter вместо файла Python.
- Я назвал соавтора с правами записи для всех подпапок, включая ту, которая не отображается.
ОБНОВЛЕНИЯ
- Запрос
files().list()
используется для возврата 40 записей из 41 в папке. Сейчас он только возвращается 39.
- Обе папки, которые больше не возвращаются, были переименованы кем-то, кто получил доступ к папке по ссылке, которая расширяет права доступа на запись.
- Когда сведения об их папках запрашиваются напрямую с использованием
files().get()
, у обеих невозвращенных папок родительская папка по-прежнему остается единственным родительским, и их разрешения не изменились.
Основные вопросы:
- Почему этот файл, в котором явно указан родительский идентификатор в моем запросе
file().list()
, не отображается в результатах этого запроса? И есть ли способ настроить запрос или файл, чтобы убедиться, что он делает?
- Существует ли более простой способ перечислить все файлы, содержащиеся в папке, в Google Drive API v3? Я знаю, что в v2 был метод
children()
для папок, но, насколько мне известно, в v3 он устарел