メインコンテンツまでスキップ

REFERENCE

開発者リファレンス

認証、API、SDK、Flow Agent のプロセッサ、パラメータ解決のリファレンスです。

Execute Script

カスタムスクリプトを実行し、戻り値をフローに取り込みます。

Execute Script は独自の JavaScript を実行するプロセッサーです。

  1. 基本的な使い方​

    Execute Script は、指定した JavaScript 実行環境で設定されたスクリプトを実行します。

  2. 設定項目​

    ノードのプロパティパネルです。

    Execute Script のプロパティパネル。Engine と Script の 2 つが必須

    Name​

    キャンバス上に表示される名前です。ワークフロー内でこのプロセッサーを識別するために使います。

    Description​

    このプロセッサーの用途を補足し、ワークフローの読みやすさを高めます。

    Properties​

    Engine(必須)​

    JavaScript の実行エンジンです。現在は ECMA5 のみ対応しています。

    Script(必須)​

    実行する JavaScript です。

    データへのアクセス

    Execute Script は payload という名前のグローバルオブジェクトを提供し、ワークフロー内のすべてのデータにアクセスできます。

    • 現在のワークフローの payload データ
    • prevMessage、prevPayload などの組み込み変数

    データの読み取り

    ワークフローに次のデータがあるとします。

    {
    "user": {
    "name": "Alice",
    "email": "zhang@example.com"
    }
    }

    スクリプトからはこう読みます。

    // "Alice"
    const userName = payload.user.name

    // "zhang@example.com"
    const userEmail = payload.user.email

    データの変更

    payload を変更することもでき、その変更は後続のプロセッサーへ引き継がれます。

    // 既存のデータを変更する
    payload.user.name = "Bob"

    // データを追加する
    payload.processedAt = new Date().toISOString()
    payload.status = "completed"

    組み込み変数へのアクセス

    Asgard の組み込み変数は payload を通して参照できます。

    // ユーザーの最後のメッセージ
    const lastMessage = payload.prevMessage

    // 直前のプロセッサーの payload
    const previousData = payload.prevPayload

    // 入れ子になったデータ
    const specificValue = payload.prevPayload.someProperty

    制限事項

    Execute Script の中では Asgard の組み込み関数(history()、vecToStr() など)を直接使えません。必要な場合は他のプロセッサーを利用してください。

  3. Workflow CRD での設定​

    - name: proc-transform
    type: execute-script
    labels:
    display_name: 検索結果の整形
    configs:
    - name: engine
    value: javascript
    - name: script
    expression: |-
    (() => {
    return rows.map(r => r.name).join("、");
    })()
  4. 接続関係​

    Success​

    スクリプトが完了すると、この接続点から次へ進みます。スクリプトの実行結果は事前には予測できません。

    Failure​

    スクリプトでエラーが起きた場合、この接続点から続き、prevError 変数にエラー情報が入ります。

  5. 実際の例​

    前のステップで取得した配列を 1 文にまとめます。

    項目値
    EngineECMA5
    Script下記
    var names = [];
    for (var i = 0; i < low_stock.length; i++) {
    names.push(low_stock[i].sku_name);
    }
    return names.join('、');

    const や map ではなく var と for を使っているのは、エンジンが ECMA5 だからです。

  6. 注意事項​

    • Engine の有効な値は ECMA5 の 1 つだけで、実体は goja です。ほかを入れると Unknown script engine になります。
    • ECMA5 なので ES6 以降の構文は使えません(アロー関数、let/const、テンプレートリテラル)。

始める準備はできましたか?

Asgard をチームでどう活用できるか、お気軽にご相談ください。

お問い合わせ