UiPath Documentation
maestro-automate
latest
false
Maestro Automate 用户指南

表达式语法

适用于工作流中的变量、运算符和条件的 JavaScript 表达式语法。

表达式是一小段 JavaScript(一种广泛使用的编程语言),用于读取或计算值。工作流中的表达式引用值带有$vars前缀,用于配置字段、决策和切换条件以及脚本代码。

变量和数据流描述了数据如何在节点之间移动,以及变量的工作方式。

变量引用​

您引用的每个值都位于$vars下:

$vars.httpRequest1.output.body      // node output
$vars.orderTotal                    // variable
$vars.manualTrigger1.output.userId  // trigger input
$vars.httpRequest1.output.body      // node output
$vars.orderTotal                    // variable
$vars.manualTrigger1.output.userId  // trigger input
  • 节点输出: $vars.<nodeName>.output 。每个节点都在.output下公开其结果。该对象的形状取决于节点,因此节点引用的每一页都列出了其节点的输出字段。
  • 变量: $vars.<name> 。
  • 触发器输入: $vars.<triggerName>.output.<inputName> 。

嵌套属性使用点表示法,数组元素使用方括号表示法:

$vars.httpRequest1.output.body.customer.email
$vars.httpRequest1.output.body.items[0].id
$vars.httpRequest1.output.body.customer.email
$vars.httpRequest1.output.body.items[0].id

编写表达式的位置​

简而言之,规则:将$vars…直接写入脚本代码、条件和设置为“表达式”的字段中,并将其包含在设置为“固定值”的文本字段内的{{ $vars… }}中。

大多数配置字段可以包含固定值或表达式。字段右端的图标将打开一个菜单,其中包含三个选项:

  • 固定值:直接输入值。
  • 表达式:编写 JavaScript 表达式。该编辑器提供 IntelliSense,会在您键入时建议名称和属性。在此模式下,该字段会在表达式前显示一个= 。
  • 清除值:清空字段。

“字段标签”旁边的“插入”菜单将打开一个可搜索列表,其中包含该节点可用的值。该列表是$vars下的一树,每个节点、其output及其中的字段都有一个条目,并且每个字段都显示其类型,例如string或object 。该列表还有一个$metadata组,其中包含FolderKey 、 InstanceId 、 ProcessKey和ElementCount 。

固定值字段​

设置为“固定值”的字段会保存文本。要在文本中嵌入表达式,请从“插入”菜单中选择一个值,该值会将引用包含在双大括号中。编辑器会检查引用,并在字段下方报告问题,例如,当节点的输出中不存在某个属性时:

https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}

表达式字段和脚本代码​

设置为“表达式”的字段、“决策”和“切换”条件、 “更新变量”部分和“脚本代码”直接采用表达式,不使用大括号:

$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200

在表达式字段中,通过使用+或使用模板字面量来将文本和值结合使用。以下两者产生相同的结果:

"https://api.example.com/users/" + $vars.manualTrigger1.output.userId
`https://api.example.com/users/${$vars.manualTrigger1.output.userId}`
"https://api.example.com/users/" + $vars.manualTrigger1.output.userId
`https://api.example.com/users/${$vars.manualTrigger1.output.userId}`

运算符​

支持的标准 JavaScript 运算符:

运算符示例结果
平等$vars.status === "active"true 或者 false
不等式$vars.count !== 0true 或者 false
比较$vars.price > 100true 或者 false
逻辑与$vars.isVerified && $vars.isActivetrue 或者 false
逻辑或$vars.role === "admin" || $vars.role === "owner"true 或者 false
三元$vars.count > 0 ? "has items" : "empty"字符串

字符串运算​

"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")

模板字面量将变量和静态文本结合在一起:

`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`

可选链接​

?.运算符可以安全地读取可能未定义的属性:

$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id

如果任何中间属性为 null 或未定义,则结果为undefined ,而不是运行时错误。

空值合并​

当值为 null 或“未定义”时, ??运算符提供默认值:

$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"

常见错误​

症状原因待执行操作
表达式解析为 undefined您在节点运行之前引用了节点的输出,或输出中不存在的字段仅参考来自上游节点的输出;请查看节点的参考页面,了解其实际输出字段。对可能缺失的属性使用可选链接 ( ?. )。
决策或切换条件行为异常或失败条件不是纯布尔值表达式,例如,可以编写为return语句编写一个解析为true或false明文表达式,例如$vars.order1.output.total > 1000 。不要使用return 。
Cannot find name '$vars' (或'$self' )变量不在此节点的作用域内,或者在节点上使用了$self ,而节点本身无法产生输出仅引用该节点的变量选取器中显示的变量。$vars仅解析为作用域内的变量; $self仅适用于生成输出的节点。
无法引用其他节点的值作用域仅限上游:节点无法查看下游节点、同级分支中的节点或其已退出循环内的节点重组,以便生产节点位于您引用它的位置的上游,或通过作用域内的变量携带该值。
$vars.<node>.error 不可用仅当在节点上启用了错误处理(或已连接其错误路径)时,节点的错误输出才在范围内。在节点上启用错误处理,或连接其错误句柄,然后引用$vars.<node>.error 。
Failed to evaluate expression =js:(https://...): Unexpected token ':'纯值(例如 URL)所在字段设置为“不带引号的表达式” ,因此会被读取为 JavaScript将字段切换为“固定值” ,或将文本放入引号中,例如"https://api.example.com/users" 。
{{ }} 显示为原义文本,或文本字段无法解析模式不匹配: {{ }}仅适用于设置为“固定值”的字段仅在固定值字段中使用{{ $vars.x }} 。在表达式字段以及“决策”和“切换”条件中,直接写入$vars.x (不带大括号)。

决策和切换条件在运行时作为表达式运行。return语句仅在脚本节点代码中有效。

注意​

  • 表达式在运行时而非设计时求值。执行节点时,会出现语法错误。
  • 配置字段中的表达式必须解析为该字段所需的类型。条件字段必须解析为true或false 。
  • 表达式字段会在表达式前面显示一个= ,以标记表达式模式。.flow文件中显示的=js:前缀是内部序列化格式,您永远不会在编辑器中输入它。
  • 类型检查不完整。对没有固定结构的输出的引用未完全验证,因此嵌套字段名称中的拼写错误可能会在没有警告的情况下通过。将嵌套路径与节点引用中列出的输出字段进行比较。

后续步骤​

  • 变量和数据流:数据如何在节点之间移动。
  • 脚本: 在节点中编写 JavaScript。
  • 社区:在 UiPath 论坛上与其他构建器一起提问和共享工作流。

此页面有帮助吗?

连接

需要帮助? 支持(opens in new window)

想要了解详细内容? UiPath Academy(opens in new window)

有问题? UiPath 论坛(opens in new window)

保持更新