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

脚本

“脚本”节点运行 JavaScript 代码并返回其结果,以及配置、JavaScript 环境和示例。

操作​

运行 JavaScript 代码,并将返回值传递给其之后的节点。

配置参考​

字段必填默认描述
代码是无要执行的 JavaScript 代码。它必须包含return语句,并且返回的值将成为节点的输出。

JavaScript 环境​

脚本在隔离的运行时中运行,并有权访问:

  • $vars :工作流的变量作用域。早期节点的输出形式为$vars.<nodeName>.<property> 。
  • $metadata :有关运行的信息,例如InstanceId 。
  • 标准 JavaScript 内置函数,例如JSON 、 Math 、 Date 、 Array 、 Object 、 String 、 Number 、 RegExp 、 Error 、 Promise 、 URL 、 URLSearchParams和计时器函数。

出于安全考虑,运行时会阻止网络 API( fetch 、 XMLHttpRequest 、 WebSocket )、动态代码执行( eval 、 Function )和存储 API( indexedDB 、 caches )。要调用外部 API,请使用“HTTP 请求”节点作为替代方案。

脚本适用于快速的内存逻辑:保持脚本速度,并避免处理非常大的有效负载,这可能会超过 runtime 限制或超时。

访问上游节点输出​

可以使用$vars.<nodeName>.<property>读取较早的节点,其中<nodeName>是节点 ID,显示在其属性面板的“高级”选项卡上:

// Access HTTP Request node response
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.code;

// Access a workflow variable
const count = $vars.myVariable;
// Access HTTP Request node response
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.code;

// Access a workflow variable
const count = $vars.myVariable;

返回值​

该脚本必须返回一个值。返回的值将成为节点的输出,下游可通过$vars.<nodeName>.output形式访问:

return {
  message: "Processed",
  count: items.length
};
return {
  message: "Processed",
  count: items.length
};

输入和输出​

输入​

脚本节点可以通过$vars访问任何上游变量。它没有类型化的输入架构 — $vars中的任何内容均可使用。

输出​

成功后,输出为$vars.<nodeName>.output ,即脚本的返回值。其形状取决于脚本返回的内容。

如果失败,当连接错误句柄时,错误为$vars.<nodeName>.error :

{
  "code": "string",
  "message": "string",
  "detail": "string",
  "category": "string",
  "status": 0
}
{
  "code": "string",
  "message": "string",
  "detail": "string",
  "category": "string",
  "status": 0
}

使用 AI 生成脚本​

代码编辑器上方的闪烁图标会接受所需内容的简单语言描述,并为您生成 JavaScript。这在访问上游节点的输出或编写快速转换时非常有用,而无需查找确切的$vars语法。

示例​

示例 1:计算后续节点的值​

// Set a variable that downstream nodes can reference
return {
  orderTotal: $vars.httpRequest1.output.body.price * $vars.httpRequest1.output.body.quantity,
  currency: "USD"
};
// Set a variable that downstream nodes can reference
return {
  orderTotal: $vars.httpRequest1.output.body.price * $vars.httpRequest1.output.body.quantity,
  currency: "USD"
};

下游节点将值访问为$vars.script1.output.orderTotal和$vars.script1.output.currency 。

示例 2:读取 HTTP 响应​

const data = $vars.httpRequest1.output.body;

return {
  title: data.title,
  userId: data.userId
};
const data = $vars.httpRequest1.output.body;

return {
  title: data.title,
  userId: data.userId
};

示例 3:条件逻辑​

const status = $vars.httpRequest1.output.code;

if (status === 200) {
  return { success: true, data: $vars.httpRequest1.output.body };
} else {
  return { success: false, statusCode: status };
}
const status = $vars.httpRequest1.output.code;

if (status === 200) {
  return { success: true, data: $vars.httpRequest1.output.body };
} else {
  return { success: false, statusCode: status };
}

示例 4:转换数组​

const items = $vars.fetchItems1.output.body;

return {
  count: items.length,
  names: items.map(item => item.name)
};
const items = $vars.fetchItems1.output.body;

return {
  count: items.length,
  names: items.map(item => item.name)
};

在脚本和数据转换之间选择​

在以下情况下使用脚本...在以下情况下使用数据转换:
您需要完整的 JavaScript 逻辑 — 循环、条件、字符串操作您需要简单的字段映射或无代码转换
您想根据上游节点输出计算一些内容您需要一个可视化映射器而无需编写代码
转换非常复杂或处于状态状态转换为简单的形状调整

后续步骤​

此页面有帮助吗?

连接

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

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

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

保持更新