Smartsheet SDK(2.0)API - 清除单元格

时间:2017-07-12 06:45:47

标签: c# smartsheet-api smartsheet-c#-sdk-v2

在白天的某个时刻,我需要通过C#SDK(Nuget包)重置Smartsheet上的数据(为NULL)

这是一个原型代码片段

// Connect tp Smartsheet API
SmartsheetClient ss = new SmartsheetBuilder().SetAccessToken(myAccessToken).Build();

// Load in the Sheet
Sheet sheet = ss.SheetResources.GetSheet(mySheetID, null, null, null, null, null, null, null);

// Get the row/cell we want to update
Row dataRow = sheet.Rows[0];
Cell dataCell = dataRow.Cells[9];
UpdateRowBuilder rb = new Row.UpdateRowBuilder(dataRow.Id);

//
// SET THE VALUE OF THE CELL HERE
//
List<Cell> resetCells = new List<Cell>();
resetCells.Add(new Cell.UpdateCellBuilder(dataCell.ColumnId, null).Build());

// Save the Sheet
ss.SheetResources.RowResources.UpdateRows(mySheetID, new List<Row>() { rb.SetCells(resetCells).Build() });

如果我将单元格的值设置为(字符串)值,那么一切都很好并且花花公子并且工作表保存,并且值出现

但是,如果我将值设置为NULL,那么我会得到一个异常......

Smartsheet.Api.InvalidRequestException: Required object attribute(s) are missing from your request: cell.value.
   at Smartsheet.Api.Internal.AbstractResources.HandleError(HttpResponse response)
   at Smartsheet.Api.Internal.AbstractResources.PutAndReceiveList[T,S](String path, T objectToPut, Type objectClassToReceive)
   at Smartsheet.Api.Internal.SheetRowResourcesImpl.UpdateRows(Int64 sheetId, IEnumerable`1 rows)
   at LHRMayfly.LHRMayFly_Processor.Reset() in C:\Projects\SmartSheetProcessor.cs:line 173

所以,最重要的问题是......你如何删除一个单元格值?

1 个答案:

答案 0 :(得分:1)

快速回答:

只需将空字符串设置为单元格值。 UpdateCellBuilder(dataCell.ColumnId, String.Empty)

讨论:

Smartsheet并不区分不同类型的空单元格。因此,发送空字符串和空字符串之间没有逻辑区别。

底层REST / JSON API对缺少的元素和显式的null具有不同的表示形式。用C#等强类型语言表示这两种情况更加困难。 (我对建议持开放态度。)