Skip to content

ステップ間でデータを変換する ​

データが次のステップに合う形で届くことはあまりありません。日付の形式が違う、リストを絞り込みたい、フィールド名が違う。このガイドでは、データの形を変える 4 つの方法を、手軽なものから柔軟なものの順に、例とともに紹介します。

方法を選ぶ ​

やりたいこと使うもの
項目に入れる値を 1 つ変える(大文字にする、リストの件数を数える、金額を合計する)項目そのものに書く 式
よくある変換をコードなしで行う(日付の整形、JSON の解析、コードからラベルへの置き換え)フォーマッター のステップ
リストから条件に合う項目だけ残すフィルター のステップ
それ以外(オブジェクトの組み替え、複数ステップのデータの結合、独自のロジック)コード のステップ

目的を果たせるいちばん手軽な方法から使いましょう。項目に書く式はキャンバスにステップを増やしませんし、フォーマッターのステップはコードよりもほかの人が読みやすくなります。

このページの例では、前の HTTP ステップ「注文を取得」の出力の本文が次のとおりだとします。

json
{
  "orders": [
    { "id": "A-1", "customer": "田中 愛子", "total": 4200, "status": "paid", "created_at": "2026-10-26T01:30:00Z" },
    { "id": "A-2", "customer": "佐藤 健", "total": 900, "status": "refunded", "created_at": "2026-10-26T03:10:00Z" }
  ]
}

式 ​

項目全体が関数で始まると、AI Studio はそれを式として評価します。式は JSONata を使うため、1 行で多くのことができます。

目的項目の値結果
注文の件数$count($.<注文を取得>.output.body.orders)2
合計金額$sum($.<注文を取得>.output.body.orders.total)5100
顧客名の一覧$join($.<注文を取得>.output.body.orders.customer, "、")田中 愛子、佐藤 健
支払い済みの注文だけ残す$filter($.<注文を取得>.output.body.orders, function($v) { $v.status = "paid" })1 件目の注文
フィールド名を変える$map($.<注文を取得>.output.body.orders, function($v) { {"orderId": $v.id, "amount": $v.total} })[{"orderId": "A-1", "amount": 4200}, …]
日本時間の今日の日付$now("[Y0001]-[M01]-[D01]", "+0900")2026-10-27

<注文を取得> はステップの ID に置き換えます。$ の一覧から選ぶか、ステップの横のコピーボタンを使ってください。

つまずきやすい点が 2 つあります。

  • 関数は 項目全体 でなければなりません。合計: $sum(...) では関数はテキストのままです。式とテキストを組み合わせるには、関数の中でテキストを作ります: $join(["合計: ", $string($sum(...))])。
  • 結果は型を保ちます。$filter(...) はリストを返すため、そのままループの 値 に入れられます。

データの選択画面の 関数 タブに、よく使う関数が並んでいます。すべての関数は 式 を参照してください。

フォーマッター ​

フォーマッター ノードは、よくある変換をコードではなく設定で行います。ステップを追加 をクリックし、組み込み を開いて フォーマッター を選び、アクションを選びます。便利なアクションの例です。

アクション例
DateTime フォーマット2026-10-26T01:30:00Z を 2026/10/26 10:30:00 に。出力フォーマット を 日本式日時、出力タイムゾーン を Asia/Tokyo にします。結果は formatted_date に入ります。
DateTime 追加注文日の 14 日後を期日にする。
Number 通貨フォーマット4200 を ¥4,200 のような通貨の表記に。
Text Parse JSONLLM やフォームの項目からテキストとして届いた JSON を、後続のステップで中を参照できるオブジェクトにします。結果は result に入ります。
ルックアップテーブルコードをラベルに置き換えます。テーブル を {"paid": "支払い済み", "refunded": "返金済み"}、キー を注文のステータスにすると、value にラベルが入ります。未知のコード用に デフォルト値 を設定します。
Text 分割 / Text 結合"a, b, c" をリストに、またはその逆に。
HTML → Markdown / Text HTML 削除メールや Web の内容を LLM に渡す前に整えます。

各アクションは値を 1 つずつ扱います。リストのすべての項目を整形するには、フォーマッターを ループ の中に置くか、式やコードを使ってください。

27 種類のアクションはすべて フォーマッターのリファレンス にあります。

フィルター ​

フィルター ノードは、リストのうち条件に合う項目だけを残します。

  1. ステップを追加 をクリックし、組み込み を開いて フィルター を選びます。
  2. 入力データ: リストへの参照を、ほかに何も入れずに設定します(例: $.<注文を取得>.output.body.orders)。
  3. フィルター条件: 項目のフィールドに対する条件を追加します(例: status が paid に等しい)。グループ内の条件はすべて一致する必要があり(AND)、グループ同士はいずれかが一致すれば OK です(OR)。パス と同じ考え方です。
  4. 一致する項目がないときの動作を決めます。既定では実行が 止まります。空のリストのまま続けるには 空の結果でも続行 をオンにします。

一致した項目は、ステップの出力の filtered に入ります。

コード ​

ほかの方法では書きにくいときは、コード のステップで JavaScript を数行書きます。

  1. ステップを追加 をクリックし、組み込み を開いて コード を選び、JavaScript実行 を選びます。

  2. 入力パラメータ に、コードで使う値を 1 つずつ追加します。キーがコード内の変数名になり、値には参照を設定します。リストやオブジェクトの型を保つため、参照だけを入れてください。

    キー値
    orders$.<注文を取得>.output.body.orders
  3. コードを書きます。各入力はすでに変数になっています。return した値がステップの出力になります。

    js
    const paid = orders.filter((o) => o.status === "paid");
    return {
      count: paid.length,
      total: paid.reduce((sum, o) => sum + o.total, 0),
      customers: paid.map((o) => o.customer),
    };

後続のステップは、結果をステップの results から読みます(例: $.<コードのステップ>.output.results.total)。

知っておきたいこと:

  • コードの中に参照を書かないでください。入力パラメータ で渡します。
  • 入力の変数には再代入できません。先にコピーします: let list = [...orders];
  • console.log(...) の出力はステップの logs に入り、実行履歴 での調査に役立ちます。
  • radash・dateFns・dateFnsTz・Decimal・nanoid のライブラリは import せずに使えます。
  • コードは 30 秒以内に終わる必要があります。API は HTTP のステップ で呼び出し、コードからは呼ばないでください。
  • コードがエラーを投げると、ステップは失敗します。エラーとリトライに対処する を参照してください。

同じコードを複数のフローに貼り付けているなら、関数 として一度だけ保存しましょう。

関連ページ ​