使用 Google-Slide-API 和 python 更改 table 列宽

Changing table column width using Google-Slide-API and python

我有一个电子表格文档,通过使用 Google-Sheet-API 我正在从中获取数据。然后通过使用 Google-Slide-API 我正在创建一个包含 'n' 幻灯片的幻灯片文档。在每张幻灯片上,我都创建了一个 table 和 'n' 行的 2 列。每张幻灯片的第一列始终包含来自电子表格 A 列的数据。第二列包含来自其他电子表格列的数据(从 B 到 'n')。然后我正在改变文字大小。到目前为止一切顺利。

现在,当我尝试调整每张幻灯片上每个 table 的列宽时,它没有做任何事情,这是一个问题,因为一些 table 包含更多信息,因此 tables 不适合幻灯片。这是不起作用的代码部分:

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()

无论有没有这个部分,tables 总是保持不变,所以它没有任何影响。该代码没有 return 任何错误或消息。

我相信你的目标如下。

  • 您有 Google 个幻灯片。
  • Google 幻灯片有几张幻灯片,每张幻灯片有一个 table 有 2 列。
  • 您想更改 2 列的列宽。
  • 您想使用 python 的 googleapis 实现此目的。
  • 您已经能够使用 Google 幻灯片 API 的 batchUpdate 方法。

修改点:

  • 我认为您的请求正文是正确的。但是,我想提出一个修改点。在您的脚本中, batchUpdate 方法在循环中使用。我认为当使用 batchUpdate 时,Google 幻灯片中的所有幻灯片的 updateTableColumnProperties 可以通过一次 API 调用 运行。

虽然我不确定您 mag 的值和您的整个脚本,但作为实现上述目标的示例脚本,以下修改后的脚本怎么样?如果这有助于您理解幻灯片 API,我很高兴。

修改后的脚本:

关于creds,请使用您的授权脚本。此外,您可以在 Quickstart for python.

看到它
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()

注:

  • 当上述脚本为运行时,每张幻灯片中table的“A”列和“B”列的宽度被修改。在此示例脚本中,分别为“A”列和“B”列设置了 100 和 300 PT。关于这一点,请根据您的实际情况进行修改。

参考文献: