Python Smartsheet API:如何无需指定列ID等参数复制工作表内容至新空白表?
Smartsheet API 复制内容到空白工作表解决方案
核心简化方案:用内置复制接口自动映射ID
不用手动匹配行列ID,直接借助Smartsheet API的工作表复制功能,一步搞定结构和数据的迁移,自动处理列ID、行层级(parent_id)的映射问题。
具体操作步骤
1. 复制源表指定内容到新表
调用POST /sheets/{sheetId}/copy接口,精准复制需要的行和列结构:
- 请求体示例:
{ "destinationType": "sheet", "newSheetName": "目标表名称", "include": ["columnIds", "rowIds"], "rowIds": [1001, 1002, 1003] // 替换为你需要复制的源表行ID列表 }
这个接口会自动把源表的列结构、指定行的内容和层级关系同步到新表,新表的列ID、行ID及parent_id会自动生成并匹配,完全不需要手动替换。
2. 清理冗余内容(可选)
如果只需要部分列,复制完成后调用DELETE /sheets/{newSheetId}/columns删除多余列;若有不需要的行,用DELETE /sheets/{newSheetId}/rows批量删除即可。
解决你之前的手动匹配问题
你替换column_id后出现parent_id不匹配,是因为源表的parent_id对应源表的行ID,直接复制到新表自然无效。而用工作表复制接口时,Smartsheet会自动将源表的行层级关系映射到新表的行ID,彻底规避这个问题。
备选方案:手动创建列+批量插行(适合自定义结构场景)
如果必须从完全空白的表开始:
- 先调用
GET /sheets/{sourceSheetId}/columns获取源表列的title、type、format等核心属性,去掉id字段后,调用POST /sheets/{newSheetId}/columns批量创建列。 - 再调用
GET /sheets/{sourceSheetId}/rows获取源表行数据,提取每个单元格的columnTitle和value,通过列标题匹配新表的列ID替换;处理行层级时,先插入父行并记录新生成的行ID,再插入子行时用新的父行ID作为parentId。
内容的提问来源于stack exchange,提问作者NBirb
相关产品推荐
相关产品推荐

