當變數需要先計算、轉換、判斷或補充預設值後,再填入目前欄位時,可以使用運算式。
只有支援運算式的欄位會顯示 fx 圖示,常見位置包括支援變數的輸入欄位,以及 IF/ELIF 等條件中的變數選擇器。若只是原樣引用上游變數,直接從變數選擇器中選取即可,無需使用運算式。
什麼時候使用運算式
運算式適用於以下場景:
- 計算金額、數量、時間長度等數字
- 判斷文字是否包含某個關鍵字
- 將表單或介面回傳的數字字串轉換為數字
- 為空字串或空陣列設定備用值
- 從物件或陣列中讀取需要的欄位
如何建立運算式
1. 在目標欄位中點擊 fx。
2. 在「運算式」編輯器中輸入 / 或 {,從清單插入可用變數;需要函式或運算子時,可點擊編輯器右上角的函式圖示,從清單插入範本後補齊參數。
3. 點擊 插入,運算式會作為該欄位的值儲存;再次點擊該運算式即可修改。
建議從變數清單插入變數,不要手動輸入節點或變數名稱,以避免引用錯誤。
可用寫法
運算式可以引用變數、讀取物件欄位或陣列項、使用常數,以及進行計算或比較。
讀取物件欄位和陣列項
使用 . 讀取物件欄位,使用 [索引] 讀取陣列中的某一項:
user.profile.name products[0] products[0].name
user.profile.name 表示讀取 user 物件中 profile 物件的 name 欄位。陣列索引從 0 開始,products[0] 表示商品清單中的第一項;products[0].name 表示第一項的 name 欄位。目前不支援連續索引,例如 matrix[0][1]。
運算子
| 類型 | 可用運算子 | 範例 |
|---|---|---|
| 數字計算 | + - * / | order.amount * 0.9 |
| 數值比較 | > < >= <= | order.amount > 100 |
| 是否相等 | == != | order.status == "paid" |
數字計算僅能用於數字,不能用於串接文字。比較運算式的結果為 true 或 false。
內建函式
| 函式 | 作用 | 範例 |
|---|---|---|
| len(value) | 計算文字長度或陣列項目數量 | len(searchResults.items) |
| sqrt(number) | 計算非負數的平方根 | sqrt(room.area) |
| round(number, digits) | 四捨五入並保留小數位 | round(order.amount / 3, 2) |
| contains(text, searchText) | 判斷文字是否包含內容 | contains(userInput.text, "退款") |
| default(value, fallback) | 值為空字串或空陣列時使用備用值 | default(user.name, "訪客") |
| toNumber(value) | 將數字字串轉換為數字 | toNumber(form.quantity) |
常見範例
動態設定等待時間
round(toNumber(apiResponse.delaySecondsText), 3)
將介面回傳的秒數字串轉換為數字,並保留 3 位小數。
判斷本月預算是否超限
monthlyBudget < monthToDateCost + currentRequest.cost
可在 IF 節點中判斷,加上本次申請費用後是否超過本月預算。條件成立時,結果為 true,可進入審核或提醒分支。
為未填寫的欄位補值
default(form.city, "未知城市")
當城市欄位為空字串時,下游將獲得「未知城市」。
使用限制
運算式不是腳本編輯器,不支援撰寫 if、迴圈、賦值等程式語句,也不能呼叫未列出的自訂函式。
儲存時,系統會驗證運算式結果是否符合目前欄位類型。例如,數字欄位應使用數字變數、數字計算或 toNumber。
發佈評論