I'm using Google API to automatize a monthly report. 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.
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