2017-07-12 45 views
0

在某一点,我需要通过C#SDK重置上的Smartsheet的数据(到NULL)(NuGet包)Smartsheet SDK(2.0)API - 白天清除细胞

这里的一个原型代码代码段

// 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

快速回答:

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

讨论:

Smartsheet不不同种空单元之间进行区分。所以发送空字符串和空字符串没有逻辑上的区别。

底层的REST/JSON API对缺少的元素和显式的null有不同的表示形式。用C#这样的强类型语言来表示这两种情况更加困难。 (我愿意接受建议。)

+0

在回答讨论时,您可以简单地添加一个ClearCell(dataCell.ColumnId)方法 –

+0

...并感谢您的答案......按预期工作 –