【问题标题】:c# Smartsheet API: Can Not Get ColumnIdc# Smartsheet API:无法获取 ColumnId
【发布时间】:2017-09-30 15:19:12
【问题描述】:

我正在尝试使用 C# SDK 从 Smartsheet 读取数据。我可以获得工作表信息,但列详细信息(如 ColumnId)为空。

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

如何获取列属性?

SDK 版本:2.2.1

【问题讨论】:

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


    【解决方案1】:

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

    • 身份证
    • 索引
    • 标题
    • 类型
    • 宽度

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

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

    一些故障排除建议:

    • 使用不同的工作表测试此场景。如果您无法使用不同的工作表重现该问题,那么可能是某个工作表的某些特殊情况阻止了Id 属性填充到GetSheet 响应中。

    • 如果您可以使用另一张工作表重现此问题,那么也许可以尝试使用此示例应用程序测试相同的场景:https://github.com/smartsheet-samples/csharp-read-write-sheet。注意 - 您需要将 Smartsheet C# SDK NuGet 包更新到版本 2.2.1 以准确模拟您要测试的场景。 (我在(未成功)尝试重现您的问题时使用了此示例应用程序。)

    【讨论】:

    • 感谢@kim 的详细回答。我已经尝试过您的建议 1. 尝试了不同的工作表:同样的问题 2. 尝试了示例应用程序:只需下载示例应用程序并更改配置并运行,相同的问题 3. 尝试邮递员:工作正常。我可以在 json 响应 4 中看到列 ID 和所有其他详细信息。尝试过的 Python:工作正常这件事肯定是关于 Visual Studio 的,但我无法解决它。我决定继续使用 Python。
    • 感谢@Decoded 的更新。很遗憾听到您无法在 Visual Studio 中使用 C# SDK,但很高兴听到您可以改用 Python 继续前进。
    • @Decoded,你能告诉我们你的环境吗?例如。操作系统和开发者工具。您的屏幕截图看起来不像 Visual Studio - 您使用的是 VS Code 吗?
    • 你好@Steve。它绝对是 Visual Studio。我在 Win 10 Pro x64 机器上使用 Visual Studio Community 2017。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多