使用 google-幻灯片-api 自动生成 powerpoint
generate powerpoint automatically using google-slides-api
我使用此 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 returned
"Invalid JSON payload received. Unknown name "parents": Cannot find
field.">
- 您想使用 google-api-python-客户端和 python.[=77 创建一个 Google 幻灯片到特定文件夹=]
- 您想使用云端硬盘 API v2。
- 从你的
file_metadata
,我是这样理解的。
- 您已经能够使用幻灯片 API.
获取和放置 Google 个幻灯片的值
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
SLIDES.presentations().create()
用于幻灯片 API。在这种情况下,不能使用 file_metadata = {'title': 'spreadsheet data DEMO','parents': {'id':folder_id}}
。你的问题的原因是这样的。
- 在您的情况下,需要使用驱动器 API。所以请加上
https://www.googleapis.com/auth/drive
. 的范围
准备:
在 运行 脚本之前,请使用以下流程更新范围。如果您的访问令牌具有此范围,则不需要执行以下流程。
- 将
https://www.googleapis.com/auth/drive
添加到范围。
- 删除包含刷新令牌和访问令牌的凭据文件。此文件创建于文件的第一个 运行。
- 运行 脚本。并请重新授权示波器。
由此,检索具有新范围的刷新令牌和访问令牌并创建新的凭证文件。
修改后的脚本:
模式 1:
在此模式中,首先,Google 幻灯片由幻灯片 API 创建,并将创建的 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)
模式二:
在此模式中,新的 Google 幻灯片直接创建到使用驱动器 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
。
参考文献:
- Files: insert of Drive API v2
- Files: update of Drive API v2
- Files: create of Drive API v3
- Files: update of Drive API v3
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
我使用此 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 returned "Invalid JSON payload received. Unknown name "parents": Cannot find field.">
- 您想使用 google-api-python-客户端和 python.[=77 创建一个 Google 幻灯片到特定文件夹=]
- 您想使用云端硬盘 API v2。
- 从你的
file_metadata
,我是这样理解的。
- 从你的
- 您已经能够使用幻灯片 API. 获取和放置 Google 个幻灯片的值
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
SLIDES.presentations().create()
用于幻灯片 API。在这种情况下,不能使用file_metadata = {'title': 'spreadsheet data DEMO','parents': {'id':folder_id}}
。你的问题的原因是这样的。- 在您的情况下,需要使用驱动器 API。所以请加上
https://www.googleapis.com/auth/drive
. 的范围
准备:
在 运行 脚本之前,请使用以下流程更新范围。如果您的访问令牌具有此范围,则不需要执行以下流程。
- 将
https://www.googleapis.com/auth/drive
添加到范围。 - 删除包含刷新令牌和访问令牌的凭据文件。此文件创建于文件的第一个 运行。
- 运行 脚本。并请重新授权示波器。
由此,检索具有新范围的刷新令牌和访问令牌并创建新的凭证文件。
修改后的脚本:
模式 1:
在此模式中,首先,Google 幻灯片由幻灯片 API 创建,并将创建的 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)
模式二:
在此模式中,新的 Google 幻灯片直接创建到使用驱动器 API 的特定文件夹。
示例脚本 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 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
。
参考文献:
- Files: insert of Drive API v2
- Files: update of Drive API v2
- Files: create of Drive API v3
- Files: update of Drive API v3
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。