[英]Get chart from Google Spreadsheet and update chart placeholder in Slides with Python
I'm using Google API to automatize a monthly report.我正在使用 Google API 来自动化月度报告。 I'm coping a spreadsheet and slide templates, updating the spreadsheet data and I want to add the charts to slides.
我正在处理电子表格和幻灯片模板,更新电子表格数据,我想将图表添加到幻灯片中。 My spreadsheet have one chart per sheet and each slide will only have one chart too.
我的电子表格每张纸有一个图表,每张幻灯片也只有一个图表。
I want to grab the chart from the spreadsheet by chart id and replace the chart placeholder on the slides by the slide id.我想通过图表 id 从电子表格中获取图表,并用幻灯片 id 替换幻灯片上的图表占位符。
def spreadsheet_chart_to_slide(spreadsheet_id, sheet_name, slides_id):
"""
Get chart from a spreadsheet and replace chart placeholder
"""
# Fetch chart information from sheets
sheets_service = Create_Service('sheets', 'v4')
sheet = sheets_service.spreadsheet().get(
spreadsheetId = spreadsheet_id,
ranges = [sheet_name]).execute().get('sheets')[0]
chart_id_sheet = sheet['charts'][0]['chartId']
# Fetch placeholder info from slides
slide_service = Create_Service('slides', 'v1')
# Replace chart in slides
slide_service = Create_Service('sheets', 'v4')
requests = []
slide_service.presentations().batchUpdate(
body = {
"requests": requests
},
presentationId = slides_id).execute()
Any idea how I can finish this?知道我怎么能完成这个吗?
I was able to solve the case like this:我能够像这样解决这个问题:
def spreadsheet_chart_to_slide(spreadsheet_id, sheet_name, presentation_id, placeholder_text):
"""
Get chart from a spreadsheet and add it to a slide
"""
try:
# Fetch chart information from sheets
sheets_service = Create_Service('sheets', 'v4')
sheet = sheets_service.spreadsheets().get(
spreadsheetId = spreadsheet_id,
ranges = [sheet_name]).execute().get('sheets')[0]
chart_id_sheets = sheet['charts'][0]['chartId']
print("Got chart id!")
# Replace chart in slides
slide_service = Create_Service('slides', 'v1')
requests = [
{
"replaceAllShapesWithSheetsChart": {
"chartId": chart_id_sheets,
"containsText": {
"text": placeholder_text
},
"linkingMode": "LINKED",
"spreadsheetId": spreadsheet_id
}
}
]
slide_service.presentations().batchUpdate(
body = {
"requests": requests
},
presentationId = presentation_id).execute()
except HttpError as error:
print(F'An error occurred: {error}')
return
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.