当变量需要先计算、转换、判断或补充默认值后,再填入当前字段时,可以使用表达式。
只有支持表达式的字段会显示 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。
发表评论.