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

如何在不使用SDK的情况下用Python从Smartsheets行获取附件?

不使用SDK访问Smartsheets行附件并下载的方法

问题原因

你之前访问不到attachments键,是因为Smartsheets API默认返回的行数据里不包含附件信息,必须在请求行数据时主动指定要包含附件的参数。

解决步骤

  1. 修改行数据请求,添加附件查询参数
    调用获取行数据的接口时,必须在URL末尾加上?include=attachments,这样返回的行对象才会携带attachments字段。请求示例:

    GET https://api.smartsheet.com/2.0/sheets/{你的表格ID}/rows?include=attachments
    

    请求头要带上你的API令牌:Authorization: Bearer {你的API令牌}

  2. 遍历行数据并处理附件
    当请求成功后,行对象里会出现attachments数组(如果该行有附件的话)。你可以遍历数组,通过附件ID调用下载接口获取文件内容,再保存到本地。

完整代码示例

import requests

# 替换成你的配置信息
SMARTSHEET_API_TOKEN = "你的API令牌"
SHEET_ID = "目标表格的ID"
headers = {"Authorization": f"Bearer {SMARTSHEET_API_TOKEN}"}

# 1. 获取包含附件的行数据
rows_response = requests.get(
    f"https://api.smartsheet.com/2.0/sheets/{SHEET_ID}/rows?include=attachments",
    headers=headers
)
rows_response.raise_for_status()  # 抛出请求错误
data = rows_response.json()

# 2. 遍历每行处理附件
for row in data["rows"]:
    row_id = row["id"]
    # 检查当前行是否存在附件
    if "attachments" not in row or not row["attachments"]:
        print(f"行ID {row_id} 没有附件")
        continue
    
    print(f"行ID {row_id} 发现 {len(row['attachments'])} 个附件")
    for attachment in row["attachments"]:
        attach_name = attachment["name"]
        attach_id = attachment["id"]
        print(f"开始下载: {attach_name}")
        
        # 3. 请求附件内容
        download_response = requests.get(
            f"https://api.smartsheet.com/2.0/sheets/{SHEET_ID}/rows/{row_id}/attachments/{attach_id}/content",
            headers=headers
        )
        download_response.raise_for_status()
        
        # 4. 保存到本地
        with open(attach_name, "wb") as file:
            file.write(download_response.content)
        print(f"{attach_name} 已保存到本地")

注意事项

  • 确保你的API令牌有足够的权限(至少需要对目标表格的读权限和附件下载权限)。
  • 如果附件名称重复,保存时可能会覆盖旧文件,你可以给文件名加上行ID或附件ID来避免冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:03:31