ステップ間でデータを変換する
データが次のステップに合う形で届くことはあまりありません。日付の形式が違う、リストを絞り込みたい、フィールド名が違う。このガイドでは、データの形を変える 4 つの方法を、手軽なものから柔軟なものの順に、例とともに紹介します。
方法を選ぶ
| やりたいこと | 使うもの |
|---|---|
| 項目に入れる値を 1 つ変える(大文字にする、リストの件数を数える、金額を合計する) | 項目そのものに書く 式 |
| よくある変換をコードなしで行う(日付の整形、JSON の解析、コードからラベルへの置き換え) | フォーマッター のステップ |
| リストから条件に合う項目だけ残す | フィルター のステップ |
| それ以外(オブジェクトの組み替え、複数ステップのデータの結合、独自のロジック) | コード のステップ |
目的を果たせるいちばん手軽な方法から使いましょう。項目に書く式はキャンバスにステップを増やしませんし、フォーマッターのステップはコードよりもほかの人が読みやすくなります。
このページの例では、前の HTTP ステップ「注文を取得」の出力の本文が次のとおりだとします。
{
"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 JSON | LLM やフォームの項目からテキストとして届いた JSON を、後続のステップで中を参照できるオブジェクトにします。結果は result に入ります。 |
| ルックアップテーブル | コードをラベルに置き換えます。テーブル を {"paid": "支払い済み", "refunded": "返金済み"}、キー を注文のステータスにすると、value にラベルが入ります。未知のコード用に デフォルト値 を設定します。 |
| Text 分割 / Text 結合 | "a, b, c" をリストに、またはその逆に。 |
| HTML → Markdown / Text HTML 削除 | メールや Web の内容を LLM に渡す前に整えます。 |
各アクションは値を 1 つずつ扱います。リストのすべての項目を整形するには、フォーマッターを ループ の中に置くか、式やコードを使ってください。
27 種類のアクションはすべて フォーマッターのリファレンス にあります。
フィルター
フィルター ノードは、リストのうち条件に合う項目だけを残します。
- ステップを追加 をクリックし、組み込み を開いて フィルター を選びます。
- 入力データ: リストへの参照を、ほかに何も入れずに設定します(例:
$.<注文を取得>.output.body.orders)。 - フィルター条件: 項目のフィールドに対する条件を追加します(例:
statusがpaidに等しい)。グループ内の条件はすべて一致する必要があり(AND)、グループ同士はいずれかが一致すれば OK です(OR)。パス と同じ考え方です。 - 一致する項目がないときの動作を決めます。既定では実行が 止まります。空のリストのまま続けるには 空の結果でも続行 をオンにします。
一致した項目は、ステップの出力の filtered に入ります。
コード
ほかの方法では書きにくいときは、コード のステップで JavaScript を数行書きます。
ステップを追加 をクリックし、組み込み を開いて コード を選び、JavaScript実行 を選びます。
入力パラメータ に、コードで使う値を 1 つずつ追加します。キーがコード内の変数名になり、値には参照を設定します。リストやオブジェクトの型を保つため、参照だけを入れてください。
キー 値 orders$.<注文を取得>.output.body.ordersコードを書きます。各入力はすでに変数になっています。
returnした値がステップの出力になります。jsconst 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 のステップ で呼び出し、コードからは呼ばないでください。
- コードがエラーを投げると、ステップは失敗します。エラーとリトライに対処する を参照してください。
同じコードを複数のフローに貼り付けているなら、関数 として一度だけ保存しましょう。