Загрузить обновленный файл на Google Диске с Python с использованием Drive API V3 не работает - PullRequest
1 голос
/ 01 августа 2020

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

Чего я хочу достичь.

  • Создать проект в Google Cloud Platform и включить Drive API - работает
  • Создать учетные данные OAuth для Drive API - работает
  • Аутентификация на Google Диске из сценария Python - работает
  • Загрузите файл, который я хочу редактировать, с помощью сценария Python - работает
  • Загрузите измененный файл после редактирования с помощью сценария Python - не работает

Я использую эту функцию из официальной документации Google: https://developers.google.com/drive/api/v2/reference/files/update

Но выдает следующую ошибку:

    raise TypeError('Got an unexpected keyword argument "%s"' % name)
TypeError: Got an unexpected keyword argument "newRevision"

Когда я удаляю его из вызова функции, я получаю следующее:

Произошла ошибка:

Не понимаю, почему я получаю это.

Почему официальный образец содержит параметр, который не поддерживается? Возможно ли, что я использую локально другую версию библиотек Google Python, чем они ожидают от меня? Я снова просто следил за официальной документацией? Возможно ли, что у меня недостаточно прав для обновления файла?

Спасибо, Андре

1 Ответ

1 голос
/ 05 августа 2020

Тем временем я сам понял, почему это не работает.

Если вы будете следовать Python Google Drive Quick Onboarding, вы будете использовать версию 3 их API: https://developers.google.com/drive/api/v3/quickstart/python

Эта строка определяет версию:

service = build('drive', 'v3', credentials=creds)

Если вы продолжите поиск в их документации функциональности для обновления файла, я оказался здесь в документации и фрагментах версии 2:

https://developers.google.com/drive/api/v2/reference/files/update

Ищете здесь фрагмент версии 3, но его нет в документации: https://developers.google.com/drive/api/v3/reference/files/update

Итак Я предположил, что все еще актуально то, что они опубликовали для версии 2, но это не так.

Я сделал все сейчас в версии 2, и она, наконец, работает.

Отредактируйте, чтобы добавить ссылку:

newRevision - допустимый параметр в версии 2, но не в версии 3, поэтому я предполагаю, что в версии 3 при загрузке больших двоичных объектов всегда создается новая ревизия (что происходит в версии 2, если этот параметр не установлен - по умолчанию это true). См. Различия в параметрах между v2 и v3 :

+--------------+--------------+--------------+
|    Method    | v2 Parameter | v3 Parameter |
+--------------+--------------+--------------+
| files.update | newRevision  |      n/a     |
+--------------+--------------+--------------+
...