UiPath Documentation
maestro
latest
false
Maestro 用户指南
重要 :
新发布内容的本地化可能需要 1-2 周的时间才能完成。

脚本

脚本节点参考:配置、环境和 JavaScript 示例。

操作

运行 JavaScript 代码,并将返回值传递给下游节点。

配置参考

字段必填默认描述
脚本要执行的 JavaScript 代码。必须包含return语句;返回的值将成为此节点的输出。

JavaScript 环境

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

  • $vars — 流程的变量范围。通过$vars.<nodeName>.<property>访问上游节点输出。
  • metadata — 流程执行元数据
  • 标准 JavaScript 内置函数— 例如JSONMathDateArrayObjectStringNumberRegExpErrorPromiseURLURLSearchParams和计时器函数。

出于安全考虑,运行时会阻止网络 API( fetchXMLHttpRequestWebSocket )、动态代码执行( evalFunction )和存储 API( indexedDBcaches )。要调用外部 API,请改用“HTTP 请求”节点。

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

访问上游节点输出

使用$vars.<nodeName>.<property>其中<nodeName>是节点的变量名称(显示在属性面板中):

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

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

// Access a flow 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.statusCode;

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

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 逻辑 — 循环、条件、字符串操作您需要简单的字段映射或无代码转换
您想根据上游节点输出计算一些内容您需要一个可视化映射器而无需编写代码
转换非常复杂或处于状态状态转换为简单的形状调整

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新