Python 3.x 使用Google幻灯片API和python更改表列宽
我有一个电子表格文档,通过使用GoogleSheetAPI我从中获取数据。然后,通过使用谷歌幻灯片API,我创建了一个包含“n”张幻灯片的幻灯片文档。在每张幻灯片上,我创建了一个包含“n”行的2列表格。每张幻灯片上的第一列始终包含电子表格A列中的数据。第二列包含来自其他电子表格列(从B到“n”)的数据。然后我改变文本大小。到目前为止还不错 现在,当我尝试在每张幻灯片上调整每个表的列宽时,它没有做任何事情,这是一个问题,因为有些表包含更多信息,因此这些表不适合幻灯片。这是代码中不起作用的部分:Python 3.x 使用Google幻灯片API和python更改表列宽,python-3.x,google-slides-api,Python 3.x,Google Slides Api,我有一个电子表格文档,通过使用GoogleSheetAPI我从中获取数据。然后,通过使用谷歌幻灯片API,我创建了一个包含“n”张幻灯片的幻灯片文档。在每张幻灯片上,我创建了一个包含“n”行的2列表格。每张幻灯片上的第一列始终包含电子表格A列中的数据。第二列包含来自其他电子表格列(从B到“n”)的数据。然后我改变文本大小。到目前为止还不错 现在,当我尝试在每张幻灯片上调整每个表的列宽时,它没有做任何事情,这是一个问题,因为有些表包含更多信息,因此这些表不适合幻灯片。这是代码中不起作用的部分: f
for i in range(number_of_slides):
regs = [
{'updateTableColumnProperties': {
'objectId': tableID[i],
'columnIndices': [j],
'tableColumnProperties': {
'columnWidth': {'magnitude': mag[j], 'unit': 'PT'}
},
'fields': 'columnWidth'
}
} for j in range(2) ]
SLIDES.presentations().batchUpdate(body={'requests': reqs},
presentationId=deckID).execute()
不管有没有这个部分,表总是保持不变,所以它不会有任何影响。代码不会返回任何错误或消息
我对python和GoogleAPI还不熟悉,我不知道为什么它不起作用。你能帮帮我吗?如果你对如何做有更好的建议,我愿意接受。谢谢大家! 我相信你的目标如下
- 你有一个谷歌幻灯片
- 谷歌幻灯片有几个幻灯片,每个幻灯片有一个表,其中有2列
- 您想更改两列的列宽
- 您希望使用googleapis for python实现这一点
- 您已经能够使用GoogleSlidesAPI使用batchUpdate方法
- 我认为你的要求是正确的。但是,我想提出一点修改意见。在脚本中,循环中使用了
方法。我认为当使用batchUpdate
时,谷歌幻灯片中所有幻灯片的batchUpdate
都可以通过一个API调用运行updateTableColumnProperties
mag
值和整个脚本,但作为实现上述目标的示例脚本,下面修改的脚本如何?如果这有助于您理解幻灯片API,我很高兴
修改脚本:
关于creds
,请使用您的授权脚本。此外,你可以在网站上看到它
注:
- 运行上述脚本时,将修改每张幻灯片中表格“A”和“B”列的宽度。在这个示例脚本中,为列“A”和“B”分别设置了100和300 PT。关于这一点,请根据您的实际情况进行修改
service = build('slides', 'v1', credentials=creds)
PRESENTATION_ID = '###' # Please set Google Slides ID.
magnitude = [100, 300] # Please set the widths for the columns A and B in each table. In this sample, 100 and 300 PT are set.
# 1. Retrieve an object for each slides.
presentation = service.presentations().get(presentationId=PRESENTATION_ID).execute()
# 2. Create a request body for the batchUpdate method.
slides = presentation.get('slides')
requests = []
for slide in slides:
pe = slide.get('pageElements')
if pe:
for pageElement in pe:
t = pageElement.get('table')
if t:
for i, m in enumerate(magnitude):
requests.append({
'updateTableColumnProperties': {
'objectId': pageElement['objectId'],
'columnIndices': [i],
'tableColumnProperties': {
'columnWidth': {'magnitude': m, 'unit': 'PT'}
},
'fields': 'columnWidth'
}
})
# 3. Request the request body.
service.presentations().batchUpdate(body={'requests': requests}, presentationId=PRESENTATION_ID).execute()