SmartsheetClient ss = new SmartsheetBuilder().SetAccessToken(accessToken).Build();
Sheet sheet = ss.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);
//Add
Cell[] cellA = new Cell[] { new Cell.AddCellBuilder(sheet.Columns[0].Id, "test task1").Build() };
Row rowA = new Row.AddRowBuilder(null,true, null, null, null).SetCells(cellA).Build();
ss.SheetResources.RowResources.AddRows(sheetId, new Row[] { rowA });
Cell[] cellB = new Cell[] { new Cell.AddCellBuilder(sheet.Columns[0].Id, "test task2").Build() };
Row rowB = new Row.AddRowBuilder(null, true, null, null, null).SetCells(cellB).Build();
ss.SheetResources.RowResources.AddRows(sheetId, new Row[] { rowB });
Cell[] cellC = new Cell[] { new Cell.AddCellBuilder(sheet.Columns[0].Id, "test task3").Build() };
Row rowC = new Row.AddRowBuilder(null, true, null, null, null).SetCells(cellC).Build();
ss.SheetResources.RowResources.AddRows(sheetId, new Row[] { rowC });
//Update
Cell[] cell = new Cell[] { new Cell.UpdateCellBuilder(sheet.Columns[0].Id, "test task update").Build() };
Row row = new Row.UpdateRowBuilder(sheet.Rows[2].Id).SetCells(cell).Build();
ss.SheetResources.RowResources.UpdateRows(sheetId, new Row[] { row });
但我得到错误 - 未处理的类型' System.ArgumentOutOfRangeException'发生在mscorlib.dll
其他信息:指数超出范围。必须是非负数且小于集合的大小。
在以下行 -
Row row = new Row.UpdateRowBuilder(sheet.Rows[2].Id).SetCells(cell).Build();
ss.SheetResources.RowResources.UpdateRows(sheetId, new Row[] { row });
因为" sheet.Rows.count"仍然是0。
因此我添加了以下行 -
sheet = ss.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);
以上行 -
Cell[] cell = new Cell[] { new Cell.UpdateCellBuilder(sheet.Columns[0].Id, "test task update").Build() };
并且错误消失了,我的工作表也会更新。
我想问一下这是否是正确的方法,一个人必须调用" GetSheet"再次加载更新的表格然后继续或者还有其他方法。
答案 0 :(得分:0)
是的,服务器上的工作表已更改,因此您需要另一个GET才能拥有匹配的本地表示。