c#Smartsheet API:无法获取ColumnId

时间:2017-09-30 15:19:12

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

我正在尝试使用C#SDK从Smartsheet中读取数据。我可以获取工作表信息,但ColumnId等列详细信息是Null。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Smartsheet.Api;
using Smartsheet.Api.Models;
using Smartsheet.Api.OAuth;

namespace SmartSheetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string token = "MY_TOKEN";
            long sheetid = MY_SHEET_ID;

            SmartsheetClient sc = new SmartsheetBuilder().SetAccessToken(token).Build();

            Sheet sheet = sc.SheetResources.GetSheet(sheetid, null, null, null, null, null, null, null);

            Console.WriteLine("Done");
            Console.ReadLine();
        }
    }
}

结果如下。仅填充列类型和标题。其他属性为Null

ColumnId Null

如何获取列属性?

SDK版本:2.2.1

2 个答案:

答案 0 :(得分:1)

sheet响应填充的GetSheet对象中的每个列应始终包含以下属性的值,至少:

  • 编号
  • <强>索引
  • 标题
  • 类型
  • 宽度

您在调试模式下看到的某些其他属性完全有可能是设计null,但响应中的每个column都应始终包含Id随后可以在GetColumn请求中使用的属性值,以检索所有列属性值。

我无法重现您的问题。我已经使用您发布的代码(使用Smartsheet C#SDK 2.2.1版)来检索工作表并检查sheet对象中由{{1}填充的多个列的属性响应。无论我检索哪个工作表或在调试模式下检查哪个列,都会填充上面列出的属性,如此屏幕截图所示:

Column properties

有关故障排除的一些建议:

  • 使用其他工作表测试此方案。如果您不能使用其他工作表重新解决问题,那么可能会有一个特定的内容阻止GetSheet属性在Id响应中填充。

  • 如果您可以使用其他工作表重新解决此问题,则可能尝试使用此示例应用程序测试此相同的方案:https://github.com/smartsheet-samples/csharp-read-write-sheet。注意 - 您需要将Smartsheet C#SDK NuGet包更新到2.2.1版,以完全模仿您想要测试的场景。 (我使用此示例应用程序尝试重新解决您的问题(不成功)。

答案 1 :(得分:0)

我知道这已经很晚了,但您可以通过访问sheet.Columns属性来遍历列。我用它来获取ColumnId和Title,这是标题字符串文本。

foreach (Column column in sheet.Columns)
        Debug.WriteLine(column.Title + " " + column.Id));