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

如何通过Python API在Smartsheet中根据Level列自动缩进行?

基于Level列实现Data Shuttle导入后的行自动缩进(API程序化方案)

核心思路

Data Shuttle本身不支持按Level列自动设置层级缩进,我们可以通过先完成数据导入,再用API批量调整行的父级关联来实现需求:

  1. 先让客户用Data Shuttle完成CSV导入,确保Level列值正确同步到目标表格
  2. 通过API拉取所有导入后的记录,按顺序遍历并根据Level值构建层级关系
  3. 调用API批量更新每行的父行ID,以此实现对应层级的缩进效果

具体实现步骤(以Airtable API为例)

1. 拉取导入后的所有记录

先调用列表接口获取包含Level字段和记录ID的完整数据:

import requests

API_KEY = "your_airtable_api_key"
BASE_ID = "your_base_id"
TABLE_ID = "your_table_id"

# 拉取目标视图下的所有记录
response = requests.get(
    f"https://api.airtable.com/v0/{BASE_ID}/{TABLE_ID}",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"view": "Grid view"}  # 替换为你实际使用的视图名称
)
records = response.json()["records"]

2. 构建层级映射,确定每行的父行

用栈结构维护当前层级的父行,按顺序遍历记录来匹配对应层级:

level_stack = []
update_batch = []

for record in records:
    current_level = record["fields"].get("Level", 0)
    record_id = record["id"]
    
    # 调整栈长度以匹配当前层级,弹出多余的父级记录
    while len(level_stack) > current_level:
        level_stack.pop()
    
    # 确定父行ID:Level为0时无父行,否则取栈顶的记录ID作为父级
    parent_id = level_stack[-1] if level_stack else None
    
    if parent_id is not None:
        update_batch.append({
            "id": record_id,
            "fields": {"Parent": [parent_id]}  # 替换为你表格中关联父行的字段名
        })
    
    # 将当前记录加入栈,作为后续子行的父级候选
    if len(level_stack) == current_level:
        level_stack.append(record_id)

3. 批量更新记录的父行关联

调用批量更新接口,将调整后的父行关系同步到表格:

# 按API限制分批更新(Airtable单次最多更新10条)
for i in range(0, len(update_batch), 10):
    batch = update_batch[i:i+10]
    update_response = requests.patch(
        f"https://api.airtable.com/v0/{BASE_ID}/{TABLE_ID}",
        headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
        json={"records": batch}
    )
    if update_response.status_code != 200:
        print(f"批次更新失败: {update_response.json()}")

关键注意事项

  • 确保CSV导入后的记录顺序正确:父行必须在对应的子行之前,否则层级映射会出错
  • 替换代码中的API密钥、Base/Table ID、字段名(比如Parent字段需和你的表格配置一致)
  • 如果是其他工具的API(如Notion),核心逻辑完全通用,仅需调整API调用的格式和字段参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:52:47