区分下拉列表 multi select(未定义选项)与常规文本列

Differentiate dropdown multi select (without options defined) with regular text columns

有什么方法可以区分类型为 drop down multi select 的列与常规文本列:

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

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

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

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

然后我使用 Postman 发出 Get Sheet 请求 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(多个 select),则 type 属性值为 TEXT_NUMBER
  • 如果列类型指定为联系人列表(单个select),则type属性值为CONTACT_LIST
  • 如果列类型指定为联系人列表(多个select)type属性值为TEXT_NUMBER

因此,似乎无法以编程方式区分 下拉列表(多个 select) 列与 Text/Number 列或来自 Text/Number 列的 联系人列表(多个 select) 列,基于列单独的元数据。 IMO,似乎是 Dropdown (multiple select) 列类型和 Contact List (multiple select) 的错误列类型为 return type: TEXT_NUMBER。也许拥有 Smartsheet 的人可以在此处发表评论,以更深入地了解这种行为。

如果您将多联系人或多下拉列表视为各种 GET 请求的新版本,那么 return 更容易获得正确的值。对于多下拉列表,您使用 "level=3" 和 "include=objectValue" 查询参数的组合,然后您会看到列类型更改为 MULTI_PICKLIST 而不是 TEXT。 (TEXT 值是为了保持向后兼容性。)

因此,从本质上讲,您的请求类似于 GET /sheets/{sheetId}?level=3&include=objectValue。

做了一些测试,3 级不可用:https://api.smartsheet.com/2.0/sheets/{sheetId}?level=3

{
  "errorCode": 1018,
  "message": "The value '3' was not valid for the parameter 'level'.",
  "refId": "1godowa5cigf1"
}

虽然我尝试了 2 级并获得了信息: https://api.smartsheet.com/2.0/sheets/{sheetId}?level=2&include=objectValue

多下拉列表的结果:

{
        "id": 5414087443146628,
        "version": 2,
        "index": 2,
        "title": "Column3",
        "type": "MULTI_PICKLIST",
        "options": [
            "a",
            "b"
        ],
        "validation": false,
        "width": 150
    }