- はじめに
- 開発
- デプロイして実行する
- 例
- 参照
式の構文
ワークフロー内の変数、演算子、条件の 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… }}ことです。
ほとんどの構成フィールドには、固定値または式のいずれかを格納できます。フィールドの右端にあるアイコンをクリックすると、メニューが開き、次の 3 つのオプションが表示されます。
- 固定値: 値を直接入力します。
- 式: JavaScript の式を記述します。エディターは IntelliSense を提供し、入力時に名前とプロパティを提案します。このモードでは、フィールドの式の前に
=が表示されます。 - 値をクリア: フィールド内を削除します。
フィールド ラベルの横にある [挿入 ] メニューをクリックすると、そのノードで利用可能な値の検索可能なリストが開きます。このリストは の下にあるツリー $vars、ノードごとに 1 つのエントリ、その output、およびその中のフィールドがあり、各フィールドにはその種類 ( string や objectなど) が表示されます。このリストには、エントリ FolderKey、InstanceId、ProcessKey、ElementCountを含む$metadata グループもあります。
固定値フィールド
[ 固定値 ] に設定されたフィールドにはテキストが格納されます。テキストに式を埋め込むには、[ 挿入] メニューから値を選択し、参照を二重中括弧で囲みます。エディターは参照を確認し、フィールドの下に問題を報告します。たとえば、ノードの出力にプロパティが存在しない場合:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
式フィールドとスクリプト コード
[ 式]、[判断] と [条件分岐 (switch)] に設定されたフィールド、[ 変数を更新 ] セクション、および [スクリプト コード] は、中括弧なしで式を直接取得します。
$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 OR false |
| 非等値 | $vars.count !== 0 | true OR false |
| 比較 | $vars.price > 100 | true OR false |
| 論理積 | $vars.isVerified && $vars.isActive | true OR false |
| 論理和 | $vars.role === "admin" || $vars.role === "owner" | true OR false |
| 三項 | $vars.count > 0 ? "has items" : "empty" | string |
文字列の操作
"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されます。
Nullish 結合
??演算子は、値が null または未定義の場合に既定値を指定します。
$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"
一般的なエラー
| 症状 | 原因 | 何をすべきか |
|---|---|---|
式は次のように解決されます。 undefined | ノードが実行される前にノードの出力を参照したか、出力に存在しないフィールドを参照した | 上流ノードからの出力のみを参照します。実際の出力フィールドについては、ノードのリファレンス ページをご覧ください。欠落している可能性があるプロパティには、任意のチェーン (?.) を使用します。 |
| [判断] 条件または [条件分岐 (switch)] 条件が予期しない動作をする、または失敗する | この条件は裸のブール式ではなく、たとえば 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 }}は固定値フィールドでのみ使用します。[式] フィールド、および [判断] および [条件分岐 (switch)] で、中括弧なしで直接 $vars.x を入力します。 |
[判断] 条件と [条件分岐 (switch)] 条件は、実行時に式として実行されます。return ステートメントは、スクリプト ノード コードでのみ有効です。
備考
- 式は設計時ではなく実行時に評価されます。構文エラーはノードの実行時に表面化します。
- 設定フィールド内の式は、そのフィールドで予期される型に解決される必要があります。条件フィールドは
trueまたはfalseに解決される必要があります。 - 式フィールドには、式モードを示す式の前に
=が表示されます。.flowファイルに表示される=js:プレフィックスは内部シリアル化形式であり、エディターに入力することはありません。 - 型チェックは部分的です。固定の構造を持たない出力への参照は完全には検証されないため、入れ子になったフィールド名の入力ミスは警告なしに通過する可能性があります。入れ子になったパスを、ノード参照にリストされている出力フィールドと比較します。
次のステップ
- 変数とデータ フロー: ノード間でデータがどのように移動するか。
- スクリプト: ノードに JavaScript を記述します。
- コミュニティ: UiPath フォーラムで質問したり、他のビルダーとワークフローを共有したりできます。