- Вы хотите создать Google Slides в указанной папке c, используя google-api- python -клиент с python.
- Вы хотите использовать Drive API v2.
- Из вашего
file_metadata
я так понял.
- Вы уже можете получать и размещать значения для Google Slides с помощью Slides API.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Точки модификации:
SLIDES.presentations().create()
используется для API слайдов. В этом случае file_metadata = {'title': 'spreadsheet data DEMO','parents': {'id':folder_id}}
не может быть использовано. Причина вашей проблемы заключается в следующем. - В вашем случае необходимо использовать Drive API. Поэтому, пожалуйста, добавьте область действия
https://www.googleapis.com/auth/drive
.
Подготовка:
Перед запуском сценария обновите области, используя следующую последовательность действий. Если ваш токен доступа имеет эту область, он не требует выполнения следующего потока.
- Добавьте
https://www.googleapis.com/auth/drive
к областям. - Удалите файл учетных данных, включая refre sh токен и токен доступа. Этот файл создается при первом запуске файла.
- Запустите скрипт. И, пожалуйста, авторизуйте области еще раз.
Таким образом, получаются токен refre sh и токен доступа с новыми областями, и создается новый файл учетных данных.
Модифицированный скрипт:
Шаблон 1:
В этом шаблоне сначала слайды Google создаются с помощью API слайдов, а созданные слайды Google перемещаются в указанную папку c.
Измененный скрипт:
SLIDES = build('slides', 'v1', credentials=creds) # or SLIDES = discovery.build('slides', 'v1', http=creds.authorize(Http()))
DRIVE = build('drive', 'v2', credentials=creds) # or DRIVE = discovery.build('drive', 'v2', http=creds.authorize(Http()))
# Create new Google Slides using Slides API.
DATA = {'title': 'spreadsheet data DEMO'}
rsp = SLIDES.presentations().create(body=DATA).execute()
file_id = rsp['presentationId']
# Move created Google Slides to specific folder using Drive API v2.
folder_id = '###'
file_metadata = {'parents': [{'id': folder_id}]}
res = DRIVE.files().update(
fileId=file_id,
body=file_metadata,
).execute()
print(res)
Если используется Drive API v3, он выглядит следующим образом.
DRIVE = build('drive', 'v3', credentials=creds) # or DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
folder_id = '###'
res = DRIVE.files().update(
fileId=file_id,
addParents=folder_id,
removeParents='root'
).execute()
print(res)
Шаблон 2:
В этом шаблоне новые слайды Google создаются непосредственно по заданным параметрам. Папка c с использованием Drive API.
Пример сценария 1: Использование Drive API v2
DRIVE = build('drive', 'v2', credentials=creds) # or DRIVE = discovery.build('drive', 'v2', http=creds.authorize(Http()))
folder_id = '###'
file_metadata = {'title': 'spreadsheet data DEMO',
'parents': [{'id': folder_id}],
'mimeType': 'application/vnd.google-apps.presentation'
}
res = DRIVE.files().insert(body=file_metadata).execute()
print(res)
Пример сценария 2: Использование Drive API v3
DRIVE = build('drive', 'v3', credentials=creds) # or DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
folder_id = '###'
file_metadata = {'name': 'spreadsheet data DEMO',
'parents': [folder_id],
'mimeType': 'application/vnd.google-apps.presentation'
}
res = DRIVE.files().create(body=file_metadata).execute()
print(res)
Примечание:
- Из вашего вопроса Я не мог понять, что вы используете
oauth2client
или google-auth
. В качестве примера я показываю DRIVE
как DRIVE = build('drive', 'v2', credentials=creds) # or DRIVE = discovery.build('drive', 'v2', http=creds.authorize(Http()))
. Пожалуйста, используйте DRIVE
и SLIDES
, которые вы используете, изменив версию и имя.
Ссылки:
Если я неправильно понял ваш вопрос и это не то направление, которое вам нужно, я прошу прощения.