Я хочу загрузить документ Google в виде .odt-файла. Есть предыдущий вопрос о том, как загружать обычные файлы с Google Диска.
Я хочу загрузить Doc с Python, потому что я хочу продолжать работать с ним в своем ведомом устройстве.
@EvilReboot Я явно связал это в своем вопросе
Скачать документы Google Workspace
Есть две вещи, которые я хотел бы уточнить:
Важно отметить, что для загрузки документов Google Workspace вам необходимо экспортировать их в формат файлов, допускающий загрузку.
Drive API поддерживает OpenDocument. Пример моего кода для экспорта в .odt из идентификатора документа Google:
```
from __future__ import print_function
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload
SCOPES = ['https://www.googleapis.com/auth/drive']
def main():
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
try:
service = build('drive', 'v3', credentials=creds)
file_id = "fileID_in_Google_Drive"
data = service.files().export(fileId=file_id, mimeType = "application/vnd.oasis.opendocument.text").execute()
if data:
filename = 'your-file-name.odt'
with open(filename, 'wb') as pdf_file:
pdf_file.write(data)
except HttpError as error:
print(F'An error occurred: {error}')
file = None
if __name__ == '__main__':
main()
Вы можете изменить:
file_id = "ID_файла_в_Google_Диске"
С идентификатором документа Google, чтобы запустить тест и проверить его. Это позволило мне изменить и протестировать файл .odf. Редактирование типа MIME на application/vnd.oasis.opendocument.formula. Это вызовет ошибку:
Произошла ошибка: <HttpError 400 при запросе https://www.googleapis.com/drive/v3/files/fileID_in_Google_Drive/export?mimeType=application%2Fvnd.oasis.opendocument.formula возвращено «Запрашиваемое преобразование не поддерживается.». Подробности: "[{'домен': 'глобальный', 'причина': 'badRequest', 'сообщение': 'Запрашиваемое преобразование не поддерживается.', 'locationType': 'параметр', 'местоположение': 'convertTo' }]">
Подтверждаем, что Drive API V3 не поддерживает экспорт в .odf.
В качестве альтернативы вы можете задокументировать и запросить функцию для API, у вас должна быть возможность открыть средство отслеживания проблем:
Редактировать:
Импорт PIP:
Рекомендации
Спасибо. На самом деле я имел в виду odt и как-то неправильно запомнил аббревиатуру, которую я соответствующим образом отредактировал.
Можете ли вы добавить необходимый pip импорт?
Они должны быть доступны здесь, и вы также можете выполнить следующие шаги: developer.google.com/drive/api/quickstart/python // Я бы тоже отредактировал.
Попробуйте это: stackoverflow.com/questions/38511444/…