首页 > 解决方案 > 区分下拉多选(未定义选项)与常规文本列

问题描述

有什么方法可以区分下拉多选类型的列与常规文本列:

这应该是一个没有任何选项的多选下拉列表:

    "id": 5414087443146628,
    "version": 2,
    "index": 2,
    "title": "Column3",
    "type": "TEXT_NUMBER",
    "validation": false,
    "width": 150

同样的问题也适用于未定义联系人选项的多联系人列表。

标签: smartsheet-api

解决方案


为了测试您描述的场景,我在 Smartsheet 中创建了以下工作表结构,其中列名表示每列的类型:

在此处输入图像描述

然后我使用 Postman 为该工作表发出Get Sheet请求:

GET https://api.smartsheet.com/2.0/sheets/5831916227192708

API 响应的columns部分如下所示:

{
    "id": 5831916227192708,
    ...
    "columns": [
        {
            "id": 1256050323154820,
            "version": 0,
            "index": 0,
            "title": "Description",
            "type": "TEXT_NUMBER",
            "primary": true,
            "validation": false,
            "width": 124
        },
        {
            "id": 5759649950525316,
            "version": 0,
            "index": 1,
            "title": "Type=Text/Number",
            "type": "TEXT_NUMBER",
            "validation": false,
            "width": 128
        },
        {
            "id": 1323283741206404,
            "version": 0,
            "index": 2,
            "title": "Type=Dropdown (single select)",
            "type": "PICKLIST",
            "validation": false,
            "width": 111
        },
        {
            "id": 7741495861110660,
            "version": 2,
            "index": 3,
            "title": "Type=Dropdown (multiple select)",
            "type": "TEXT_NUMBER",
            "validation": false,
            "width": 113
        },
        {
            "id": 3048711514285956,
            "version": 0,
            "index": 4,
            "title": "Type=Contact List (single select)",
            "type": "CONTACT_LIST",
            "validation": false,
            "width": 122
        },
        {
            "id": 3992195570132868,
            "version": 1,
            "index": 5,
            "title": "Type=Contact List (multiple select)",
            "type": "TEXT_NUMBER",
            "validation": false,
            "width": 125
        }
    ],
    ...
}

在此响应中,我们看到以下内容:

  • 如果列类型指定为Text/Number,则type属性值为TEXT_NUMBER
  • 如果列类型指定为Dropdown (single select),则type属性值为PICKLIST
  • 如果列类型指定为Dropdown (multiple select),则type属性值为TEXT_NUMBER
  • 如果列类型指定为联系人列表(单选),则type属性值为CONTACT_LIST
  • 如果列类型指定为联系人列表(多选),则type属性值为TEXT_NUMBER

因此,仅基于列元数据,似乎无法以编程方式区分下拉(多选)列与文本/数字列或联系人列表(多选)列与文本/数字列。IMO,似乎是Dropdown (multiple select)列类型和Contact List (multiple select)列类型返回的错误type: TEXT_NUMBER。也许有 Smartsheet 的人可以在这里发表评论,以提供对这种行为的更多见解。


推荐阅读