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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:15:41