我当时使用此website作为使用Google电子表格中的内容自动生成Google幻灯片的来源。一切正常,但我无法将其保存到我的Google驱动器中的文件夹中。有人可以帮我吗?
我尝试过:
folder_id = 'xxx'
file_metadata = {'title': 'spreadsheet data DEMO','parents': {'id':folder_id}}
DATA = {'title': 'Generating slides from spreadsheet data DEMO'}
rsp = SLIDES.presentations().create(body=file_metadata).execute()
deckID = rsp['presentationId']
titleSlide = rsp['slides'][0]
titleID = titleSlide['pageElements'][0]['objectId']
subtitleID = titleSlide['pageElements'][1]['objectId']
然后出现错误:
HttpError:https://slides.googleapis.com/v1/presentations?alt=json返回“收到无效的JSON有效负载。未知名称“父母”:找不到字段。“>
file_metadata
,我这样理解。如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
SLIDES.presentations().create()
用于Slides API。在这种情况下,无法使用file_metadata = {'title': 'spreadsheet data DEMO','parents': {'id':folder_id}}
。您的问题的原因是这样。https://www.googleapis.com/auth/drive
的范围。在运行脚本之前,请使用以下流程更新范围。如果您的访问令牌具有此范围,则不需要执行以下流程。
https://www.googleapis.com/auth/drive
添加到合并范围。这样,将检索具有新作用域的刷新令牌和访问令牌,并创建新的凭证文件。
在此模式下,首先,由Google Slides API创建Google幻灯片,并将创建的Google幻灯片移至特定的文件夹。
修改后的脚本: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)
在这种模式下,使用Drive API将新的Google幻灯片直接创建到特定文件夹。
示例脚本1:使用Drive API v2DRIVE = 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 v3DRIVE = 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
。如果我误解了你的问题,而这不是你想要的方向,我深表歉意。