Неполные результаты REST API Google Диска для файлов общего диска

Проблема

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

У меня (думаете?) есть полные права доступа к файлам и папкам на общем диске благодаря учетным данным, которые я использую (в облачной консоли установлено значение Owner).

Тем не менее моя проблема заключается в том, что когда я запрашиваю у REST API список файлов данного общего диска, результаты не соответствуют документация. Возвращенные файловые объекты содержат только 5 полей:

  • kind, name, id, mimeType, teamDriveId

Согласно предоставленной документации, я должен получить еще несколько полей.

Ниже приведен код, который я использую для запроса API и вывода.

Упрощенный источник

credentials = get_credentials() # retrieves and processes app credentials
drive = get_drive_api(credentials) # get the drive API v3 using httplib2 and discovery
query = drive.files().list(
    pageSize = 10,
    corpora = 'teamDrive',
    supportsTeamDriveItems = True,
    includeTeamDrives = True,
    teamDriveId = "..."
)
results = query.execute() # contact the REST API
files = results.get('files', [])
for file in files:
    print(file)

Для данного общего диска вывод:

{
  'kind': 'drive#file',
  'id': '...',
  'name': 'filename',
  'mimeType': 'application/vnd.google-apps.document',
  'teamDriveId': '...'
}

Что явно не является ожидаемым результатом в соответствии с документы.

Есть ли какая-нибудь информация о том, почему я не получаю полные ожидаемые данные?


person Theophile Dano    schedule 12.09.2017    source источник


Ответы (1)


При использовании API Google Диска v3 по умолчанию больше не возвращаются полные ресурсы. Используйте параметр запроса fields, чтобы запросить возврат определенных полей. Если не указать, возвращается только подмножество часто используемых полей.

Чтобы получить все доступные поля ресурса, вы можете установить fields в *.

Например:

query = drive.files().list(
    pageSize = 10,
    corpora = 'teamDrive',
    supportsTeamDriveItems = True,
    includeTeamDrives = True,
    teamDriveId = "...",
    fields="*"  # or maybe "files(id,name,capabilities/canShare),nextPageToken"
)
person danielx    schedule 12.09.2017