You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用smartsheet-python-SDK写入多选列表列时遇cell.value缺失错误

问题分析

你遇到的errorCode 1012错误,核心原因是多选列表(multi-picklist)列的单元格值格式要求为数组,但你当前传入的是单个字符串值;同时直接复用从Sheet拉取的row对象时,可能包含了部分没有value属性的单元格(比如未设置值的多选列单元格),导致API请求被判定为缺少必填属性。

解决方案
  1. 修正值的格式:多选列的单元格值必须是数组类型,哪怕只选一个选项,也要用['选项值']的格式。
  2. 仅更新目标单元格:不要直接修改从API获取的完整row对象并提交,而是构造只包含需要更新的单元格的Row对象,避免携带无效的空单元格数据。
修改后的代码示例
workspace_name = 'API TEST'
sheet_name = 'test sheet'
lookup_value = 'b'
# 多选列值改为数组格式
write_value = ['A']

write_column = 'first column'
lookup_column = 'multi picklist'

smart = init_smartsheet()
sheet_data, sheet_id = init_sheet(workspace_name, sheet_name, client)

write_column_id = sheet_data.get_column_by_title(write_column).id_
lookup_column_id = sheet_data.get_column_by_title(lookup_column).id_

target_row_id = None
# 只获取目标行的ID即可,无需拉取完整row对象
for row in sheet_data.rows:
    for cell in row.cells:
        if cell.column_id == lookup_column_id and cell.value == lookup_value:
            target_row_id = row.id_
            break
    if target_row_id:
        break

# 构造仅包含需更新单元格的Row对象
from smartsheet.models import Row, Cell

updated_row = Row()
updated_row.id_ = target_row_id

# 写入普通列
write_cell = Cell()
write_cell.column_id = write_column_id
write_cell.value = write_value[0]  # 普通列用单个值
updated_row.cells.append(write_cell)

# 如果是要更新多选列,示例如下:
# multi_pick_cell = Cell()
# multi_pick_cell.column_id = lookup_column_id
# multi_pick_cell.value = ['A', 'C']  # 多选列用数组
# updated_row.cells.append(multi_pick_cell)

# 提交更新
smart.Sheets.update_rows(sheet_id, [updated_row])
关键说明
  • 多选列的cell.value必须是字符串数组,比如['选项1', '选项2'],不能是单个字符串。
  • 提交更新时,只包含需要修改的单元格,不要复用从Sheet读取的完整行对象,避免因其他单元格缺少value属性导致请求失败。

内容的提问来源于stack exchange,提问作者Daan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:53:33