0

我正在尝试将我的 SmartSheet API 从 v1 更新到 v2,并且在下面的代码中遇到了一些困难。

代码返回所选工作表的行,但是行内所有单元格的“ColumnType”属性为 NULL。

我知道要返回这个你必须将它指定为包含 - 我相信我有。

Dim sheet As Sheet = smartsheet.SheetResources.GetSheet(curSheet.Id, New RowInclusion() {RowInclusion.COLUMN_TYPE, RowInclusion.COLUMNS}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)

For Each Row As Row In sheet.Rows
If Row.ParentRowNumber Is Nothing Then
Dim i As Integer = 0
Dim colType As ColumnType
If Not Row.Cells(i).ColumnType = ColumnType.TEXT_NUMBER Then
'Do some stuff here...
End if
Next

任何帮助都会很棒。

谢谢,史蒂夫

4

1 回答 1

1

简短的回答是从https://github.com/smartsheet-platform/smartsheet-csharp-sdk/pull/60获取最新的 SDK并将您的 GetSheet 更新为以下内容:

Dim sheet As Sheet = client.SheetResources.GetSheet(SHEETID, New SheetLevelInclusion() {SheetLevelInclusion.COLUMN_TYPE}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)

注意使用SheetLevelInclusion而不是RowInclusion。你应该准备好了。

如果您关心细节,更长的答案是......该GetSheet方法不接受数组/ IEnumerableRowInclusion作为第二个参数。它需要一个数组/ IEnumerableSheetLevelExclusion在 C# 中,相同的调用会失败,因为 C# 对IEnumerable. 但是,由于 Visual Basic 对Enum类型之间的隐式转换及其对数组(以及类似类型IEnumerable)的宽松转换的宽容,当参数是数组 /IEnumerable并且元素是枚举。在这种情况下,Visual Basic 实际上是在转换RowInclusion值到它们的基础数值(Enum 总是由基础数值类型隐式或显式支持)并将这些值转换SheetLevelExclusion为与相同基础数值对应的值,以便它可以调用 GetSheet 方法。

这里的另一个复杂情况是 SDK 没有 COLUMN_TYPE 作为可用SheetLevelExclusion值。所以我上面链接的拉取请求/分支添加了这一点。在我在这里的简单测试中使它起作用。

于 2016-03-12T09:11:01.697 回答