C# 使用C在smartsheet中同时添加更新#

C# 使用C在smartsheet中同时添加更新#,c#,smartsheet-api,C#,Smartsheet Api,但我有一个错误- mscorlib.dll中发生类型为“System.ArgumentOutOfRangeException”的未处理异常 附加信息:索引超出范围。必须为非负数且小于集合的大小 下一行- SmartsheetClient ss = new SmartsheetBuilder().SetAccessToken(accessToken).Build(); Sheet sheet = ss.SheetResources.GetSheet(sheetId

但我有一个错误- mscorlib.dll中发生类型为“System.ArgumentOutOfRangeException”的未处理异常

附加信息:索引超出范围。必须为非负数且小于集合的大小

下一行-

        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 });
           sheet = ss.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);
因为“sheet.Rows.count”仍然是0

因此,我在下面的行中添加了-

           Row row = new Row.UpdateRowBuilder(sheet.Rows[2].Id).SetCells(cell).Build();
            ss.SheetResources.RowResources.UpdateRows(sheetId, new Row[] { row });
在下一行之上-

        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 });
           sheet = ss.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);
然后错误就消失了,我的工作表也更新了


我想问一下,这是否是正确的方法,即必须再次调用“GetSheet”以加载更新的工作表,然后继续,或者有其他方法。

是的,服务器上的工作表已更改,因此您需要另一个GET来拥有匹配的本地表示