使用 Smartsheet API(Python SDK)更新单元格格式

Updating cell format using Smartsheet API (Python SDK)

我正在尝试将值和显示格式写入智能sheet。我通过以下方式访问 sheet:

import os
import re
import logging
import smartsheet
file_pssw = open('path2accesstoken/smsht.txt','r')
aux = file_pssw.readlines()
access_token = re.findall(r"'(.*?)'", aux[0].strip())[0]
#ID of your sheet to update
sheet_id = XXXXXXXXXXXXXXXX
# Initialize client
ss = smartsheet.Smartsheet(access_token)
# Load entire sheet
sheet = ss.Sheets.get_sheet(sheet_id, include=['format'],page_size=206)

然后我可以使用

访问特定单元格的格式
In[45]: sheet.rows[48].cells[3].format
Out[45]: ',,,,,,,,,22,,,,,,'    

根据 Smartsheet API 文档和 Python SDK 源代码,似乎下面的代码应该成功地改变了这个单元格的格式(它至少使成功的 PUT 请求):

In[46]: sheet.rows[48].cells[3].format = ',,,,,,,,,22,,,,,3,'
        result = ss.Sheets.update_rows(sheet_id, [sheet.rows[48]])

但是,如果我随后重新加载 sheet 并检查此单元格的格式:

In[47]: sheet = ss.Sheets.get_sheet(sheet_id, include ['format'],page_size=206)
        sheet.rows[48].cells[3].format
Out[47]: ',,,,,,,,,22,,,,,,'

单元格格式未更改(通过检查 sheet 到 UI 确认)。

Python SDK 中不包含此功能吗?如果是,我如何访问它?如果不是,使用 requestsjson 包构建请求的最佳方法是什么?

这改编自 docs 中的更新行示例以包含格式属性。请务必注意,要更新单元格的格式,您还必须包含 value 属性。如果您不想更改它,您将想要使用单元格的当前值。

请注意,在构建单元格对象格式时,其前面有一个下划线。我还应该指出,在这个过程中,我正在为请求构建一个新的单元格对象和一个新的行对象,而不是修改任何现有对象。

# Build new cell value

new_cell = ss_client.models.Cell()
new_cell.column_id = <COLUMN_ID>
new_cell.value = 2
new_cell._format = ",,,,,,,,27,,,,,,,"

# Build the row to update

new_row = ss_client.models.Row()
new_row.id = <ROW_ID>
new_row.cells.append(new_cell)

# Update rows

updated_row = ss_client.Sheets.update_rows(
<SHEET_ID>, # sheet_id
[new_row])