選項型別:select 與 multi_select
用途
select 適合訂單狀態、風險等級等一次只能選一個值的受控字典;multi_select 適合商品標籤、技能與適用通路等可同時選多個值的欄位。例如 CRM 可用 select 限制商機階段只能是「新商機/洽談中/成交」,再用 multi_select 標註「企業客戶」與「續約優先」。
建立 schema
單選欄的 columns.create body:
{
"name": "訂單狀態",
"type": "select",
"required": true,
"default_value": "待處理",
"options": ["待處理", "處理中", "已完成"]
}多選欄的 body 不可設定 default_value:
{
"name": "客戶標籤",
"type": "multi_select",
"required": false,
"options": ["企業客戶", "續約優先", "需要培訓"]
}合法與不合法的值
select 是一個選項字串;multi_select 是不重複的選項字串陣列。
{
"data": {
"訂單狀態": "處理中",
"客戶標籤": ["企業客戶", "續約優先"]
}
}未列在 options 的值、重複值,以及把多選寫成單一字串都不合法:
{
"data": {
"訂單狀態": "已取消",
"客戶標籤": ["企業客戶", "企業客戶"]
}
}{
"data": {
"客戶標籤": "企業客戶"
}
}顯示與回傳
回傳值保持字典中的原始字串與陣列順序;API 不會替選項加入顏色、代碼或翻譯:
{
"data": {
"訂單狀態": "處理中",
"客戶標籤": ["企業客戶", "續約優先"]
}
}顏色與排序是前端呈現設定,不應改變寫回 API 的字串。
注意事項
options必須有 1–50 個項目;每個項目是唯一、非空且不超過 64 字的字串。- 兩種型別都不可設定
max_length;multi_select也不可設定default_value,空值使用[]。選填select可用null或空字串表示未選,建議固定送null。 select的default_value必須是其options之一:其他任何字串在columns.create都會得到400Invalid default value for column '<name>': Default value '<value>' is not one of the column options(非字串的預設值則會得到Default value '<value>' must be a string (one of the column options)),columns.update也以400拒絕。multi_select的default_value在兩者上都是400。- 這兩種型別一律可用。過去用來控制它們的
CUSTOM_TABLE_RULES_V12部署開關已從後端刪除,所以沒有東西需要開啟,也不會再出現「requires …」的拒絕。 PATCH columns/{column_id}的options會整批取代清單。若移除仍被 live 紀錄使用的項目,伺服器回 409,其detail.in_use物件會列出每個選項的使用數量;已軟刪除的紀錄不會阻擋移除。新清單仍須包含欄位目前的default_value,請先在前一個請求中更改預設值。- 選項改名要送非空的
option_renames物件,例如{ "處理中": "進行中" }。每個舊名稱都必須存在;新名稱必須非空且最多 64 字;改名後的完整選項清單仍須唯一。 - 選項改名會重寫相符的
selectcell 與multi_select陣列成員,也包含軟刪除紀錄,避免之後還原時復活舊值。相符的select預設值也會改名,受影響的unique規則 entries 會重建。若該欄位是unique_tuple規則的成分,改名與任何型別變更都會被拒絕,須先移除該規則。同一請求同時送options與option_renames會被拒絕,但除了最先觸發的上述unique_tuple拒絕之外,options清單會先單獨檢查:移除了仍被 live 紀錄使用之選項的清單會得到上面的409,無效的清單或不含目前default_value的清單則得到該項檢查的400。只有通過這些檢查的清單才會得到400options and option_renames cannot be combined in one request — rename first, then replace the list。先改名,再用下一個請求整批取代清單。 - 無論是移除選項還是改名,都不會改寫紀錄歷史,而且兩條還原路徑都會檢查目前的選項清單。還原一個 cell 帶有已移除選項或改名前名稱的歷史版本,或還原一筆帶有已移除選項的垃圾桶紀錄,會回
409,detail.conflicts的項目例如{"type": "invalid_value", "field": null, "message": "Field 'Order status' value 'Canceled' is not an allowed option (valid: Pending, Processing, Complete)"}。不會還原任何東西,也不會暫存去等待簽核。
試試看
到 API Playground 建立選項欄;選項後續異動的完整契約請見 columns.update。
Last updated on