区分下拉列表 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
}
有什么方法可以区分类型为 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
}