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

如何使用Smartsheet API及Python SDK批量下载多个工作表

解决方案

你现有代码有两个核心问题:

  • 接口调用错误:Reports.get_report_as_excel仅用于下载Smartsheet的报表(Report)资源,下载普通工作表必须调用Sheets类下的导出接口。
  • 没有实现批量逻辑,也没做定时任务适配,直接跑会出现路径错乱、单文件下载失败导致全任务中断、历史文件被覆盖等问题。

可用批量下载脚本

脚本内置异常捕获、自动加日期后缀避免文件覆盖、全绝对路径适配定时任务运行环境,你只需要修改配置段的工作表ID、保存路径即可:

import os
import smartsheet
from datetime import datetime

# -------------------------- 配置项 按需修改 --------------------------
# 要下载的资源列表:格式为 (资源ID, 自定义文件名前缀)
# 共8个资源,替换成你自己的工作表/报表ID和对应名称即可
SHEET_LIST = [
    (1234567890123456, "项目进度表"),
    (2345678901234567, "人员统计表"),
    (3456789012345678, "预算明细表"),
    (4567890123456789, "物料清单"),
    (5678901234567890, "交付排期表"),
    (6789012345678901, "风险台账"),
    (7890123456789012, "周度汇总表"),
    (8729488427892475, "汇总报表"),
]
# 文件保存目录 提前手动创建好 建议不要放在桌面 避免权限问题
SAVE_DIR = "D:/Smartsheet_Weekly_Backup"
# -------------------------------------------------------------------

# 初始化客户端
smartsheet_client = smartsheet.Smartsheet(os.environ['SMARTSHEET_ACCESS_TOKEN'])
smartsheet_client.errors_as_exceptions(True)

# 生成本次下载的日期后缀 格式如20240520 避免历史文件被覆盖
date_suffix = datetime.now().strftime("%Y%m%d")

if __name__ == "__main__":
    for res_id, res_name in SHEET_LIST:
        try:
            # 拼接最终文件名:前缀_日期.xlsx
            file_name = f"{res_name}_{date_suffix}.xlsx"
            # 普通工作表调用Sheets接口下载,报表调用Reports接口
            # 你可以根据自己的资源类型调整下面的调用方法
            smartsheet_client.Sheets.get_sheet_as_excel(
                res_id,
                SAVE_DIR,
                file_name
            )
            print(f"下载成功: {file_name}")
        except Exception as e:
            print(f"下载失败 [资源ID:{res_id} 名称:{res_name}] 错误信息: {str(e)}")

如果你要下载的资源里包含Report类型的报表,只需要把对应资源的下载方法替换为smartsheet_client.Reports.get_report_as_excel即可,参数格式和工作表下载接口完全一致。

Windows任务计划配置要点

  • 提前手动创建代码里配置的SAVE_DIR文件夹,给运行任务的Windows账号开该目录的读写权限
  • 访问令牌SMARTSHEET_ACCESS_TOKEN要配置在系统环境变量中,不要只配在当前用户的临时环境变量里,否则定时任务非交互运行时会读不到变量
  • 新建任务计划时,「操作」配置:
    • 程序/脚本:填你本地python.exe的完整绝对路径,比如C:\Python311\python.exe
    • 添加参数:填脚本本身的完整绝对路径,比如D:\scripts\smartsheet_download.py
    • 起始于:填脚本所在的文件夹路径,比如D:\scripts\
  • 如果需要在用户未登录时也运行任务,勾选「不管用户是否登录都要运行」,输入对应Windows账号的密码即可,不需要勾选最高权限除非你的保存目录在系统受保护路径下。
  • 先手动在命令行跑一次脚本,确认所有文件能正常下载到指定目录,再配置每周定时触发规则,避免配置完任务跑失败找不到原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:42:22