- はじめに
- 開発
- デプロイして実行する
- 例
- 参照
スクリプト
スクリプト ノードは JavaScript コードを実行し、その結果を構成、JavaScript 環境、例とともに返します。
機能
JavaScript コードを実行し、その後のノードに戻り値を渡します。
構成のリファレンス
| フィールド | Required | 既定 (Default) | 説明 |
|---|---|---|---|
| コード | はい | なし | 実行する JavaScript コード。return ステートメントを含める必要があり、戻り値がノードの出力になります。 |
JavaScript 環境
スクリプトは独立したランタイムで実行され、以下にアクセスできます。
$vars: ワークフローの変数スコープです。以前のノードの出力は、$vars.<nodeName>.<property>として利用できます。$metadata: 実行に関する情報 (InstanceIdなど)。JSON、Math、Date、Array、Object、String、Number、RegExp、Error、Promise、URL、URLSearchParams、タイマー関数などの標準の JavaScript 組み込み関数。
セキュリティの観点から、ランタイムはネットワーク API (fetch、 、 XMLHttpRequest、 WebSocket)、動的コード実行 (eval、 Function)、およびストレージ API (indexedDB、 caches) をブロックします。外部 API を呼び出すには、代わりに HTTP 要求ノードを使用できます。
スクリプトは高速なメモリ内ロジックを目的としており、スクリプトの速度を保ち、実行時の制限を超えたりタイムアウトしたりする可能性のある非常に大きなペイロードの処理を避けてください。
アップストリーム ノードの出力にアクセスする
以前のノードは $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 ロジック (ループ、条件、文字列操作) が必要です。 | 単純なフィールド マッピングまたはコード不要の変換が必要な場合 |
| アップストリームノードの出力から何かを計算したい | コードを書かずに視覚的なマッパーが必要な場合 |
| 変換が複雑であるか、ステートフルである | 変換は単純な再形成です |
次のステップ
- 変数とデータ フロー:
$vars、式の構文、変数のスコープ設定。 - HTTP 要求ノード: スクリプトの一般的なデータ ソースです。
- 意思決定ノード: スクリプトの出力に対する分岐。
- コミュニティ: UiPath フォーラムで質問したり、他のビルダーとワークフローを共有したりできます。