如何用Python更新指定ID的Smartsheet表格?
解决Smartsheet SDK重复创建表格的问题
核心原因
你提到的示例代码默认逻辑是每次运行都创建新表格,所以会生成同名但ID不同的表格。要指定更新已有表格,只需把「创建新表格」的逻辑替换为「查找目标表格并获取其ID」的逻辑即可。
具体修改方案
1. 替换创建逻辑为查找逻辑
移除原代码中create_sheet的调用,改用list_sheets获取所有表格,筛选出你要操作的目标表格:
import smartsheet # 初始化客户端(替换成你的API令牌) smartsheet_client = smartsheet.Smartsheet('YOUR_API_TOKEN') # 定义你要操作的表格名称 TARGET_SHEET_NAME = "目标表格名称" # 获取所有表格列表 all_sheets = smartsheet_client.Home.list_sheets(include_all=True).data # 查找目标表格 target_sheet = None for sheet in all_sheets: if sheet.name == TARGET_SHEET_NAME: target_sheet = sheet break # 处理未找到的情况(可选:要么创建新表格,要么抛出提示) if not target_sheet: print(f"未找到表格 {TARGET_SHEET_NAME},将创建新表格") # 这里可以保留原示例的创建表格逻辑,按需调整列定义 new_sheet = smartsheet.models.Sheet({ "name": TARGET_SHEET_NAME, "columns": [ {"title": "Primary Column", "primary": True, "type": "TEXT_NUMBER"}, {"title": "Status", "type": "PICKLIST", "options": ["Not Started", "In Progress", "Completed"]} ] }) target_sheet = smartsheet_client.Home.create_sheet(new_sheet)
2. 使用目标表格ID执行更新操作
拿到target_sheet.id后,所有后续操作(比如添加行、修改单元格)都基于这个ID执行,示例:
# 示例:添加行到目标表格 rows_to_add = [ smartsheet.models.Row({ "cells": [ {"column_id": target_sheet.columns[0].id, "value": "New Row Value"}, {"column_id": target_sheet.columns[1].id, "value": "In Progress"} ] }) ] smartsheet_client.Sheets.add_rows(target_sheet.id, rows_to_add)
额外提示
- 如果存在多个同名表格,上述代码会匹配第一个找到的表格;若需精准定位,可结合文件夹ID(指定在某文件夹下查找)
- 确保你的API令牌拥有目标表格的读取和修改权限
内容的提问来源于stack exchange,提问作者FOttolini
相关产品推荐
相关产品推荐

