Кто-нибудь знает, как использовать API GoggleDrive для получения файлов из категории «Общие диски».
У меня есть вызов API, который я могу использовать для получения метаданных через FileID, который работает для файлов, к которым у меня есть общий доступ, но когда я пытаюсь получить идентификатор файла, который находится на общем диске, я получаю сообщение об ошибке «Файл не найден».
См. код ниже с выводом:
def GetFileInfoById(TheFileId):
service = authenticate()
# Call the Drive v3 API
results = service.files().get(fileId=TheFileId,
fields = "id, name, md5Checksum, webViewLink").execute()
pprint(results)
if __name__ == "__main__":
GetFileInfoById(' FILE ID Here')
Результат, который я получаю:
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 404 when requesting
https://www.googleapis.com/drive/v3/files/ File ID Here ?fields=id%2C+name%2Cmd5Checksum%2CwebViewLink&
alt=json returned "File not found: 1xJImDFvjIEJlLKUxFqzarm6fSWV8Vlxe.". Details:
"[{'message': 'File not found: File ID Here.', 'domain': 'global', 'reason': 'notFound',
'location': 'fileId', 'locationType': 'parameter'}]">
Этот код работает должным образом для файлов, которыми я владею, и файлов, которыми мне поделились. Я получаю список идентификаторов файлов из API Google, включая мой общий диск (я использовал параметр corpora='AllDrives' в вызове списка). Есть ли способ включить все диски в вызов get? Вызов списка не включал все, пока я не добавил параметры...
Используя обычный код учетных данных, который вы видите в кратком руководстве по Python. Это работает нормально. Параметр supportAllDrives — это то, что мне нужно.
Если вы пытаетесь получить файлы из раздела «Общие диски» с помощью метода Drive API get
, вам может потребоваться использовать параметр supportsAllDrives
запроса. Если в вашем вызове API для него не установлено значение true, он выдает ту же ошибку HttpError 404
.
supportsAllDrives
boolean
○ Поддерживает ли запрашивающее приложение как «Мои диски», так и общие диски.
Ваш вызов API должен выглядеть примерно так:
# Call the Drive v3 API
results = service.files().get(fileId=TheFileId,
supportsAllDrives=True, # Add supportsAllDrives parameter
fields = "id, name, md5Checksum, webViewLink").execute()
Демо
supportsAllDrives
(true), и он вернул ответ файла, как показано ниже:
какой код вы используете для авторизации?