2016-03-07 4 views
0

J'essaie de mettre à jour mon API SmartSheet de v1 vers v2 et rencontre quelques difficultés avec le code ci-dessous.Cell ColumnType est NULL à l'aide de l'API Smartsheet

Le code retourne des lignes pour la feuille sélectionnée, mais la propriété "ColumnType" de toutes les cellules dans les lignes sont NULL. Je sais que pour revenir à cela, vous devez le spécifier comme une inclusion - que je crois avoir.

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 

Toute aide serait formidable.

Merci, Steve

Répondre

1

La réponse courte est juste obtenir le dernier SDK de https://github.com/smartsheet-platform/smartsheet-csharp-sdk/pull/60 et mettre à jour vos GetSheet à ce qui suit:

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

Notez l'utilisation de SheetLevelInclusion plutôt que RowInclusion. Vous devriez être tous ensemble. Si vous vous souciez des détails, la réponse la plus longue est ... La méthode GetSheet n'accepte pas un tableau/IEnumerable de RowInclusion comme deuxième argument. Il attend un tableau/IEnumerable de SheetLevelExclusion. En C#, le même appel d'appel échouerait car C# impose une vérification de type plus stricte sur le paramètre de type générique IEnumerable. Cependant, en raison de la clémence de Visual Basic concernant les conversions implicites entre Enum types et ses conversions clémentes pour les tableaux (et les types similaires comme IEnumerable), il est possible d'invoquer une fonction avec le "mauvais" type d'argument lorsque l'argument est un tableau/IEnumerable les éléments sont Enums. Dans ce cas, Visual Basic convertit réellement les valeurs RowInclusion à leur valeur numérique sous-jacente (Enum est toujours implicitement ou explicitement sauvegardé par un type numérique sous-jacent) et convertit ces valeurs à la valeur SheetLevelExclusion correspondant à la même valeur numérique sous-jacente afin qu'il puisse invoque la méthode GetSheet.

L'autre complication ici est que le SDK n'a pas COLUMN_TYPE comme une valeur disponible SheetLevelExclusion. Donc, la demande de traction/branche que j'ai liée à ci-dessus ajoute cela. Dans mon test simple ici, ça a fonctionné.

+0

Merci beaucoup! Cela l'a résolu. J'ai essayé différentes façons de l'inclure et Smartsheet est revenu me dire que c'était un problème connu. Cependant, cela dit tout cela fonctionne maintenant! Merci encore. – Steve