Skip to content

関数でコードを再利用する ​

関数 は、ワークスペースに一度保存して、どのフローからでも使える JavaScript です。コードのステップ が 1 つのフローに属するのに対し、関数は共有されます。関数のバグを一度直せば、その関数を呼び出すすべてのフローに修正が反映されます。

自社の割引ルールでの価格計算、郵便番号のチェック、API のレスポンスをテーブルの形に変換する処理など、複数の場所で必要なロジックに使います。

1. 関数を作成する ​

  1. サイドバーの 関数 を開き、関数を作成 をクリックして ゼロから作成 を選びます(ファイルからインポート は、ほかのワークスペースからエクスポートした関数を読み込みます)。
  2. 関数名 と、何をするかがわかる説明を付けます。フローでは名前で関数を選ぶため、calc2 より 注文合計を計算 のほうがわかりやすくなります。

ビルダーを開くと、左側にひな形のコード、右側に関数の名前・説明・入力パラメータ・出力 が表示されます。ひな形にはサンプルの greeting パラメータがあるので、自分のパラメータを追加したら削除してください。

Calculate order total の関数ビルダー。左に JavaScript のコード、右に名前・説明、items(Array・Required)の入力パラメータ、Format が json_object で出力例が空の出力

2. 入力を定義する ​

入力パラメータ で、関数に必要な値ごとに 入力パラメータを作成 をクリックします。

設定用途
名前コードで使う名前(例: items)。英数字と _ を使います。
型文字列・数値・ブール値・オブジェクト・配列 のいずれか。
必須フローから必ず渡す必要があるかどうか。
デフォルト値フローが値を渡さなかったときに使う値。
説明何を渡すか。フローで関数を使う人に表示されます。

3. コードを書く ​

名前付きの関数を書きます。AI Studio はコード内の 最初の function 名前(...) を呼び出し、その戻り値が関数の出力になります。入力の受け取り方は、関数の引数で決まります。

  • 引数が 1 つ(例: function calculateTotal(input)): すべての入力パラメータを 1 つのオブジェクトとして受け取ります。input.items が入力パラメータ items です。
  • 引数が複数(例: function calculateTotal(items, coupon)): 各引数に、同じ名前の入力パラメータが入ります。

例:

js
function calculateTotal(input) {
  const subtotal = input.items.reduce((sum, item) => sum + item.price * item.quantity, 0);
  const discount = subtotal >= 10000 ? 0.1 : 0;
  const tax = 0.1;
  return {
    subtotal,
    discount: Math.round(subtotal * discount),
    total: Math.round(subtotal * (1 - discount) * (1 + tax)),
  };
}

ひな形の先頭のコメントに、import せずに使えるライブラリ(radash・dateFns・dateFnsTz・Decimal・nanoid)が書かれています。console.log(...) の出力は、実行したときに Logs に表示されます。

4. テストする ​

  1. 実行 は各入力パラメータの デフォルト値 を使うため、現実的なデフォルト値を設定しておきます。オブジェクト や 配列 は JSON で入力します(例: [{"price": 4000, "quantity": 3}])。
  2. 実行 をクリックします。Input・Output・Logs・Error のタブを持つパネルが開きます。
  3. 必要に応じて、関数が返す値の例を 出力例 に入力します。フローを作る人が出力の形を把握できます。
実行をクリックした後のパネル。Input・Output・Logs・Error のタブがあり、Output に discount 1500、subtotal 15000、total 14850 が表示されている

動作したら 保存 をクリックします。保存すると関数が公開され、ツールバーの バージョン履歴 で以前のバージョンを確認できます。

5. フローから呼び出す ​

  1. フローで ステップを追加 をクリックし、組み込み を開いて 関数 を選び、関数実行 を選びます。

  2. 関数ID で関数を選びます。

  3. 入力 に、入力パラメータごとに項目を追加します。キーはパラメータ名、値は多くの場合参照です。リストやオブジェクトの型を保つため、参照だけを入れてください。

    キー値
    items$trigger.output.items
  4. 後続のステップは、結果をステップの output から読みます(例: $.<関数のステップ>.output.output.total)。関数がオブジェクトではなく単一の値やリストを返す場合は、output.value に入ります。

コードがエラーを投げるとステップは失敗し、メッセージはステップの error に入ります。エラーとリトライに対処する を参照してください。

フローで使っている関数を変更する ​

フローは、公開済みのフローも含め、関数の最新の保存内容を呼び出します。それが関数の利点ですが、間違いも一度にすべてのフローに届きます。変更を保存する前に:

  • 入力と出力の互換性を保ちます。新しい入力は任意にし、フローが使っている出力のフィールドの名前を変えたり削除したりしないでください。
  • 実際のフローが渡す入力でテストします。実行履歴 の実行からコピーできます。
  • 互換性のない変更は、⋮ メニューの 複製 でコピーを作り、フローを 1 つずつコピーに切り替えます。

関数とコードのステップの違い ​

コードのステップ関数
置き場所1 つのフローワークスペース
変更が反映されるときフローを公開したとき関数を保存したとき
テスト方法フローを実行する単独で 実行 する
向いている用途その場限りの変換共通の業務ルール

関連ページ ​