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

Smartsheet API无法保存:更新花名册表格调用UpdateSheet报错求助

解决Smartsheet API UpdateSheet时的InvalidRequestException错误

问题出在你直接将GetSheet获取的完整Sheet对象传入UpdateSheet接口——这个接口仅支持修改Sheet的基础属性(如名称、描述),不允许传递rows、columns等大量元数据字段,这就是报错的核心原因。正确的做法是使用Smartsheet API专门的行操作接口完成清空旧行、添加新行的逻辑:

修正后的代码

// 1. 获取Sheet并构建列映射
Sheet roster = ssc.SheetResources.GetSheet(SomeSheeNumberGoesHere, null, null, null, null, null, null, null);
Dictionary<string, long> columnMap = new Dictionary<string, long>();
foreach (Column column in roster.Columns)
    columnMap.Add(column.Title, (long)column.Id);

// 2. 批量删除所有现有行
List<long> rowIdsToDelete = roster.Rows.Select(row => (long)row.Id).ToList();
if (rowIdsToDelete.Count > 0)
{
    ssc.SheetResources.RowResources.DeleteRows(roster.Id, rowIdsToDelete, true);
}

// 3. 批量构建新行并添加
List<Row> newRows = new List<Row>();
foreach (EmployeeData emp in oEmploys)
{
    var newCells = new List<Cell>();
    newCells.Add(new Cell() { ColumnId = columnMap["WFM_ID"], Value = emp.WFM_ID });
    newCells.Add(new Cell() { ColumnId = columnMap["Email"], Value = emp.Email });
    newCells.Add(new Cell() { ColumnId = columnMap["Employee"], Value = emp.Employee });
    newCells.Add(new Cell() { ColumnId = columnMap["Supervisor"], Value = emp.Supervisor });
    newCells.Add(new Cell() { ColumnId = columnMap["FirstName"], Value = emp.FirstName });
    newCells.Add(new Cell() { ColumnId = columnMap["LastName"], Value = emp.LastName });
    newCells.Add(new Cell() { ColumnId = columnMap["Tier"], Value = emp.Tier });
    newCells.Add(new Cell() { ColumnId = columnMap["Title"], Value = emp.Title });
    
    Row trow = new Row() { Cells = newCells };
    newRows.Add(trow);
}

if (newRows.Count > 0)
{
    ssc.SheetResources.RowResources.AddRows(roster.Id, newRows);
}

关键说明

  • 删除行:用RowResources.DeleteRows批量删除所有现有行,第三个参数ignoreRowsNotFound设为true可避免因行已被删除导致的报错。
  • 添加行:用RowResources.AddRows批量添加新行,这是Smartsheet API推荐的批量操作方式,比逐行添加效率更高。
  • 避免误用UpdateSheet:UpdateSheet仅用于修改Sheet的顶层属性(如Name、Description),不能用来操作行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:16