使用Smartsheet Node.js SDK添加行时如何设置行缩进?
解决Smartsheet API添加缩进行的问题
你遇到的核心问题是误解了indent属性的用法——Smartsheet API中,行的缩进是通过**父行ID(parentId)**构建层级关系实现的,而非直接指定indent数值。以下是正确的实现方式:
正确请求体示例
同一请求中添加父行和缩进子行(用临时ID关联)
如果要在一个请求里完成父行和子行的添加,不需要提前获取父行ID,可使用临时负ID关联:
const myRowObj = [ // 父行,设置临时ID用于关联 { id: -1, cells: [ { columnId: 3811134080870276, value: 'no indent', }, { columnId: 8314733708240772, value: "this line has no indent" } ] }, // 子行,通过临时parentId关联到父行,自动缩进一级 { parentId: -1, cells: [ { columnId: 3811134080870276, value: 'indented under parent' }, { columnId: 8314733708240772, value: "this line is indented" } ] } ]
先添加父行,再添加子行(用实际ID)
如果分两次请求,先添加父行并获取其ID,再添加子行时指定该ID为parentId:
// 第一步:添加父行,获取返回的行ID const parentRow = await smartsheet.sheets.addRows(sheetId, [ { cells: [/* 父行单元格数据 */] } ]); const parentRowId = parentRow.result[0].id; // 第二步:添加子行,指定parentId const childRow = await smartsheet.sheets.addRows(sheetId, [ { parentId: parentRowId, cells: [/* 子行单元格数据 */] } ]);
错误原因解析
- 错误1062:你在同一行对象中同时使用了
toBottom(位置属性)和indent,API明确禁止这种组合——indent不能与其他位置指定符(如toBottom/toTop)混用。 - 错误1123:批量添加行时,所有行必须使用同类型的位置属性(要么都指定
toBottom,要么都指定parentId,要么都不指定)。你仅给第二行设置indent(被API识别为位置属性),第一行无对应设置,因此触发冲突。
关键提示
Smartsheet的行缩进依赖父-子层级结构,指定parentId后,子行会自动继承缩进级别,无需手动设置indent属性。
内容的提问来源于stack exchange,提问作者Don V
相关产品推荐
相关产品推荐

