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

标签 python smartsheet-api

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

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

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

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

单元格格式未更改(通过 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])

关于python - 使用 Smartsheet API (Python SDK) 更新单元格格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48216697/

相关文章:

java - 使用带有 Java 的 Smartsheet API 缩进行

c# - 在 C# 中从智能表中检索行数据

Python OOP - 网络 session

python - 从文本文件中删除名称

python - 是否可以使用 lambda 作为字典默认值?

smartsheet-api - Smartsheet - 使用 API 将工作表下载为 Excel 文件

python - 使用python将mysql中的值分配给dict

python - 使用 Python 查找唯一的数组对

java - SmartSheet-API:更改读写发布 URL

c# - 创建 excel 表和输入 SQL 一起运行时不起作用?