Webhook と Google Sheets の連携:データを送信する方法

Webhook と Google Sheets の連携にコードは不要です。2026年10月8日に本番環境で試験した、入力検証付きのモデル不要ワークフローを使います。Universal Webhook → JSON Operations(JQ)→ Verification Router と接続し、有効な入力を Append Rows と Webhook Response に振り分けます。認証済みの有効なリクエストは200を返して1行を追加しました。無効な入力は422、APIキーの未指定・不正は403を返し、行は追加されませんでした。機密情報を除去したワークフローもインポートして再試験しました。試験済みワークフローをダウンロード。以下の推奨設定に従ってください。以前の10月1日のエディター試験と、モデルを使う代替手順は、それぞれ検証範囲が異なります。2026年10月9日には、重複防止(event_id)を備えた版を本番環境で試験し、インポート後にも再試験しました。

関連:ウェブサイトの見込み客情報を Google Sheets に取り込む、およびAI Flowi Workflow の Google Sheets 連携。

執筆:Ai Flowi · 技術レビュー:Janice Lee、テクニカルサポート、Ai Flowi。

公開日: · 更新日:

Dify から移行しますか?Webhook から Google Sheets へのワークフローを AI Flowi Workflow で再構築するでは、ノードの対応関係、認証情報、検証項目を紹介しています。

次の資料もご覧ください:AI Flowi Workflow と n8n の比較、AI Flowi Workflow と Dify の比較、Zapier の代替ツールガイド、またはMake からの移行ガイド。

推奨ワークフロー:本番環境で試験済みの入力検証(2026年10月8日)

この版は、AI Flowi Workflow 1.9.2 が稼働するworkflow.aiflowi.comの AI Flowi 本番ワークスペースで試験しました。架空のデータと承認済みの Google 接続を使い、本番 Webhook に実際の HTTP POST リクエストを送信しました。各リクエストの後、アプリで作成した試験用シートから行数を取得して確認しました。この結果の対象は、以下の推奨版です。以前の10月1日のエディター試験は、過去の試験を紹介するセクションに残しています。

始める前に

  • AI Flowi Workflow ワークスペースで承認済みの Google 接続。
  • 列がname、email、requestの順に並ぶ Google Sheets のスプレッドシートと、その Spreadsheet ID。以下の設定ではSheet1を使います。
  • POST リクエストを送信する側の Platform API Key。

追加するノード

7つのノードを追加します。太字は画面に表示される正確な名称です。説明で2つの JSON Operations ノードと2つのレスポンスを区別しています。

  1. Universal Webhook:HTTP POST を受信します。
  2. JSON Operations:JSON を検査・整形する JQ クエリでリクエストを検証します。
  3. Verification Router:有効な入力を Verified、無効な入力を Rejected に振り分けます。
  4. JSON Operations:Verified 分岐で行データを準備します。
  5. Append Rows:Google Sheets に行を書き込みます。
  6. Webhook Response:行を書き込んだ後、200を返します。
  7. Webhook Response:拒否した入力に対して422を返します。

ポートを接続する

以下の表示ポートを使います。2列目には、ワークフローファイル内の正確な出力・入力フィールド名を示しています。最後の列では、同名ノードのどちらを使うかを示しています。

6つの接続:接続元の出力 → 接続先の入力
表示名とポート出力 → 入力フィールド名分岐または用途
Universal Webhook.JSON → JSON Operations.JSONrequest_data → data検証へ
JSON Operations.JSON → Verification Router.Verification Resultdata_output → verification_result検証から
Verification Router.Verified → JSON Operations.JSONverified → data行データの準備へ
JSON Operations.JSON → Append Rows.Rowsdata_output → values行データの準備から
Append Rows.Append Result → Webhook Response.Response Bodyresult → body_data200レスポンスへ
Verification Router.Rejected → Webhook Response.Response Bodyrejected → body_data422レスポンスへ

試験済み版を設定する

  1. まず、Universal Webhookで、POSTをHTTP Methods内で有効にし、AuthenticationをPlatform API Keyに、POST Response ModeをFrom Flowに設定します。
  2. 1つ目のJSON OperationsでJQ Expressionを選び、以下の検証クエリを貼り付けます。JQ フィールドは表示したままにしてください。非表示のフィールドに保存されたクエリは、実行時に除外されます。
(.body) as $b
| if ($b|type) != "object" then {verified: false, error: "Request body must be a JSON object with name, email and request."}
  else ([ (if ($b.name|type) == "string" and ($b.name|length) > 0 then empty else "name is required and must be text" end),
          (if ($b.email|type) == "string" and ($b.email|test("^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$")) then empty else "email is required and must be a valid address" end),
          (if ($b.request|type) == "string" and ($b.request|length) > 0 then empty else "request is required and must be text" end) ]) as $errs
  | if ($errs|length) > 0 then {verified: false, error: "Validation failed", details: $errs}
    else {verified: true, values: [[ $b.name, $b.email, $b.request ]]} end
  end
  1. 検証の出力をVerification RouterのVerification Result入力に接続します。Verifiedを2つ目のJSON Operationsに、Rejectedを入力拒否用の Webhook Response に接続します。
  2. 2つ目のJSON OperationsでJQ Expressionを選び、{values: .values}を入力します。このフィールドも表示したままにします。JSON 出力をAppend RowsのRows入力に接続します。
  3. 次に、Append Rowsで承認済みのGoogle Accountを選び、Spreadsheet IDにシートの ID を設定します。RangeをSheet1!A:Cに、Value Input OptionをUSER_ENTEREDに設定します。
  4. 次に、Append ResultをResponse Bodyに接続します。対象は成功時のWebhook Responseです。そのHTTP Statusを200 OKに設定します。Rejectedに接続したレスポンスでは、HTTP Statusを422 Unprocessable Entityに設定します。
  5. 自身の Production Endpoint に、Platform API Key を含むx-api-keyヘッダーと、例えば{"name":"Webhook Test","email":"test@example.com","request":"Synthetic test"}のような JSON 本文を付けて POST を送信します。HTTP レスポンスとシートの両方を確認してください。有効なリクエストなら1行が追加され、email のないリクエストなら422が返り、シートは変更されないはずです。

記録された本番試験結果

以下は、2026年10月8日の元のフローの結果です。行数には、それ以前の架空の試験データの行も含まれます。

T1~T8:HTTP ステータスとシートの行数への影響
試験HTTP ステータス行数への影響
T1:認証済みの有効なリクエスト2003 → 4、1行追加
T2:必須フィールド(email)の欠落4224 → 4、変更なし
T3:フィールドの型が不正(name が数値)4224 → 4、変更なし
T3b:不正な email4224 → 4、変更なし
T4:JSON の構文が不正4224 → 4、変更なし
T5:APIキーの未指定4034 → 4、変更なし
T6:APIキーが不正4034 → 4、変更なし
T7:存在しない Spreadsheet ID によるスプレッドシートへのアクセス失敗4044 → 4、試験用シートに変更なし
T8a:重複送信の1回目2004 → 5、1行追加
T8b:同じ内容の2回目の送信2005 → 6、さらに1行追加

機密情報を除去したファイルも、新規フローにインポートしました。ノードは7つ、接続は6つです。Google アカウントと Spreadsheet ID を設定した後、インポート版は T1 で200を返し(6 → 7行)、T2、T3、T3b、T4 では422を返して行を追加せず、T5、T6 では403を返して行を追加しませんでした。T8a と T8b はどちらも200を返しました(7 → 8 → 9行)。インポート版では T7 を再実施していません。元の設計での障害試験で確認しています。

利用前に知っておくべき制限

  • 重複防止:順次送信に対応するv2 ワークフローで利用できます。2026年10月9日に、同じevent_idを使って5件を同時送信したところ、すべて200を返し、シートに3行が追加されました(15 → 18行、該当イベントの行数は0 → 3)。このワークフローは同時実行に対して安全ではありません。送信側で順次送信するか、後続の処理で重複を除去してください。信頼性試験の結果をご覧ください。この簡易な10月8日版では、同じ内容を送信するたびに行が追加されます。
  • スプレッドシート障害への対応は未解決です:Google Sheets のエラー(例えば Spreadsheet ID の誤り)が発生すると、フローが停止します。プラットフォームは、Google API の URL と Spreadsheet ID を含むコンポーネントの生のエラーとともに、HTTP 404(または500)を返します。バージョン1.9.2には、フロー内のエラー分岐がありません。本番運用前に Spreadsheet ID と共有設定を確認し、エンドポイントのレスポンスをそのままエンドユーザーに表示しないでください。
  • HTTP レスポンスに実行 ID は含まれません:トランザクションログにはコンポーネントの実行が記録されますが、送信側へのレスポンスには run ID も execution ID も含まれません。
  • Verification Router を使ってください:以前のビルドでは、従来の Condition ルーターの2つ目の出力接続が、エディターの自動保存時に失われました。最終的な Verification Router を使う設計では、開いて自動保存しても6つの接続はすべて維持されました。
  • JQ を表示したままにしてください:JQ フィールドを非表示にすると、JSON Query is required and cannot be blankというエラーとともに HTTP 500 が返りました。JQ Expression を選び、クエリフィールドを表示したままにしてください。
  • 共有前にエクスポートファイルから機密情報を除去してください:Download によるエクスポートでは、Google アカウントの詳細や Spreadsheet ID は除去されません。接続 ID、Webhook エンドポイントの URL、ユーザー・フォルダー・フローの ID も残っていました。共有する前に非公開の値を除去してください。以下の公開ダウンロードファイルからは、機密情報を除去済みです。
  • External Provider 認証は試験していません。記録された認証試験では Platform API Key を使いました。

費用

プラン:Goは年払いで月額USD8から(月払いUSD10)、Plusは月額USD16から(月払いUSD20)、Pro 100は月額USD80から(月払いUSD100)、Pro 200は月額USD160から(月払いUSD200)、Pro 500は月額USD400から(月払いUSD500)。毎月5,000~250,000 Flowi Tokensが含まれ、追加購入も可能です。ノード実行1回につき1トークン。サードパーティのAPIとモデルの利用料金は含まれません。

試験済みワークフローをダウンロードする

重複防止付きの Webhook から Google Sheets へのワークフローをダウンロード(ZIP)。v2 の ZIP にはai-flowi-webhook-to-google-sheets-duplicate-protection.jsonが含まれます。2026年10月9日に本番環境で試験し、インポート後にも再試験しました。重複防止の設定手順と制限に従ってください。

インポート後、Google Accountを選び、YOUR_SPREADSHEET_IDを自身のSpreadsheet IDに置き換えます。また、FL209という名前のタブ(ダウンロード版で使っているタブ名です。Upsert Row ノードで変更できます)を作り、1行目の見出しをevent_id,name,email,requestの順に設定します。Webhook 認証は、試験済み設定に合わせて Platform API Key に設定し、POST を有効にして、POST Response Mode が From Flow になっていることを確認します。自身のデータを使う前に、例えば{"event_id":"example-event-001","name":"Webhook Test","email":"test@example.com","request":"Synthetic test"}のような架空のリクエストを送信し、同じものを再送してください。最初は200と{"status":"inserted"}、次は200と{"status":"duplicate"}が返り、追加の行が作られないことを確認します。

重複防止のない簡易版をダウンロード(ZIP)。この v1 の ZIP にはai-flowi-webhook-to-google-sheets-validated.jsonが含まれます。2026年10月8日に本番環境で試験し、インポート後にも再試験しました。10月8日の設定手順に従い、Google Account を選び、Spreadsheet ID とSheet1!A:Cの範囲を設定し、列をname,email,requestにして、Webhook 認証を設定してください。どちらのダウンロード版も試験済みです。

重複防止を追加する(2026年10月9日に試験済み)

送信側が再送する場合は、この v2 ワークフローを使います。同じイベントの再送には同じevent_idを使い、新しいイベントには別の識別子を使ってください。2026年10月9日に本番環境で試験し、機密情報を除去したダウンロード版も新規フローにインポートして再試験しました。重複防止の対象は順次送信です。

追加するノード

8つのノードを追加します。太字は画面に表示される正確な名称です。説明で3つの JSON Operations ノードと2つのレスポンスを区別しています。

  1. Universal Webhook:Platform API Key 認証と From Flow レスポンスモードで HTTP POST を受信します。
  2. JSON Operations:以下の JQ で name、email、request、event_id を検証します。
  3. Verification Router:有効な入力を Verified、無効な入力を Rejected に振り分けます。
  4. JSON Operations:Verified 分岐で、次の式を使って行データを準備します:{values: .values}。
  5. Upsert Row:event_id をキーとして行を挿入または更新します。
  6. JSON Operations:成功結果を inserted または duplicate に整形します。
  7. Webhook Response:書き込み成功後に200を返します。
  8. Webhook Response:拒否した入力に対して422を返します。

ポートを接続する

7つの接続:接続元の出力 → 接続先の入力
表示名とポート出力 → 入力フィールド名分岐または用途
Universal Webhook.JSON → JSON Operations.JSONrequest_data → data検証へ
JSON Operations.JSON → Verification Router.Verification Resultdata_output → verification_result検証から
Verification Router.Verified → JSON Operations.JSONverified → data行データの準備へ
JSON Operations.JSON → Upsert Row.Row Datadata_output → row_data行データの準備から
Upsert Row.Result → JSON Operations.JSONresult → dataレスポンスの整形へ
JSON Operations.JSON → Webhook Response.Response Bodydata_output → body_data200レスポンスへ
Verification Router.Rejected → Webhook Response.Response Bodyrejected → body_data422レスポンスへ

入力検証とシートへの書き込みを設定する

検証用のJSON OperationsでJQ Expressionを選び、フィールドを表示したまま、次の v2 検証クエリをそのまま貼り付けます:

(.body) as $b
| if ($b|type) != "object" then {verified: false, error: "Request body must be a JSON object with name, email and request."}
  else ([ (if ($b.name|type) == "string" and ($b.name|length) > 0 then empty else "name is required and must be text" end),
          (if ($b.email|type) == "string" and ($b.email|test("^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$")) then empty else "email is required and must be a valid address" end),
          (if ($b.request|type) == "string" and ($b.request|length) > 0 then empty else "request is required and must be text" end),
          (if ($b.event_id|type) == "string" then (if ($b.event_id|length) >= 1 and ($b.event_id|length) <= 100 then empty else "event_id is required and must be text between 1 and 100 characters" end) else "event_id is required and must be text between 1 and 100 characters" end) ]) as $errs
  | if ($errs|length) > 0 then {verified: false, error: "Validation failed", details: $errs}
    else {verified: true, values: [[ $b.event_id, $b.name, $b.email, $b.request ]]} end
  end

行データ準備用のJSON OperationsでJQ Expressionを選び、{values: .values}を使います。フィールドは表示したままにします。Upsert RowでGoogle Accountを選び、Spreadsheet IDを入力します。Sheet NameをFL209、Header Rowを1、Key Columnをevent_idに設定し、Case Sensitive Key Matchを有効にして、Value Input OptionをRAWに設定します。タブの1行目には、event_id,name,email,requestをこの順に配置する必要があります。

レスポンス整形用のJSON OperationsでJQ Expressionを選び、フィールドを表示したまま、次の式を使います:

{status: (if .action == "inserted" then "inserted" elif .action == "updated" then "duplicate" else error("Unexpected upsert action") end)}

この整形処理で、成功レスポンスから Spreadsheet ID、範囲、Google のすべてのフィールドを除去します。成功時のWebhook Responseを200 OK、拒否時のレスポンスを422 Unprocessable Entityに設定し、両方のContent Typeをapplication/jsonに設定します。スプレッドシートのエラーには対応しません。このエラーが起きると、レスポンスノードを実行する前にフローが停止します。成功・拒否のレスポンスを解釈するには、レスポンス設定とあわせてHTTP ステータスコードを確認してください。

重複防止ワークフローを表示した AI Flowi Workflow エディター。Universal Webhook、JSON Operations による検証、Verification Router、event_id をキーにした Upsert Row、200 または 422 を返す Webhook Response ノード
AI Flowi Workflow エディターに表示した、試験済みの重複防止ワークフロー(非公開の識別子は非表示)。

識別子、適用範囲、保持期間、動作

event_id キーによる重複防止の範囲
項目値
識別子呼び出し側が指定するbody.event_id。1~100文字のテキストを、列 A(event_id)にそのまま保存します。大文字と小文字を区別し、前後の空白は除去しません。
適用範囲1つのスプレッドシート内の1つのワークシート(FL209)。別のシートにある同じevent_idは独立して扱われます。そのシートに書き込むすべての送信元が、同じキーの名前空間を共有します。
保持期間そのevent_idを持つ行がシートに存在する限り有効です。有効期限や独立した受信ログはありません。行を削除・編集すると、同じキーでも再び挿入できます。
動作初回送信:行を挿入し、200 {"status":"inserted"}を返します。再送:同じ行を更新し(最後の書き込みが優先)、新しい行は作らず、200 {"status":"duplicate"}を返します。

実測された同時実行の制限:2026年10月9日に、同じevent_idを使って5件を同時送信したところ、すべて200を返し、シートに3行が追加されました(15 → 18行、該当イベントの行数は0 → 3)。このワークフローは同時実行に対して安全ではありません。送信側で順次送信するか、後続の処理で重複を除去してください。Upsert Row はロックなしで読み書きし、既存の重複行は統合しません。本番試験結果をご覧ください。

記録された結果:本番フローとインポート版

以下の両試験は2026年10月9日に完了しました。行数には、各試験内でそれ以前に作った架空の試験データの行も含まれます。T7 は引き続き未達です。意図したエラー処理による502レスポンスは返らず、両フローとも生の404エラーを返し、行は変更されませんでした。

v2 試験:元の本番フローとインポート版
試験期待結果元の v2:HTTP / 行数インポート版:HTTP / 行数判定
T1 有効なリクエスト200、1行追加200 / 0→1200 / 6→7合格
T2 email の欠落422、行追加なし422 / 1→1422 / 7→7合格
T3 name が数値422、行追加なし422 / 1→1422 / 7→7合格
T3b 不正な email422、行追加なし422 / 1→1422 / 7→7合格
T4 JSON の構文が不正422、行追加なし422 / 1→1422 / 7→7合格
T5 APIキーの未指定403、行追加なし403 / 1→1403 / 7→7合格
T6 APIキーが不正403、行追加なし403 / 1→1403 / 7→7合格
T7 不正なスプレッドシート502、所定のエラー本文、行追加なし404、生のエラー / 1→1404、生のエラー / 7→7未達(行の変更なし)
T8a/T8b 重複送信inserted の後に duplicate、最初は1行追加、次は0行200,200 / 1→2→2200,200 / 7→8→8合格
T9a/T9b 同じ event_idinserted の後に duplicate、行数はちょうど1行200,200 / 2→3→3200,200 / 8→9→9合格
T10a/T10b 別の event_id、同じ本文2行200,200 / 3→4→5200,200 / 9→10→11合格
T11 event_id が未指定 / null / 数値 / 空 / 101文字422、行追加なし422 ×5 / 5→5422 ×5 / 11→11合格
T12 event_id が100文字200、1行追加200 / 5→6200 / 11→12合格

バージョン1.9.2では、スプレッドシート障害への対応は未解決です。Spreadsheet ID の誤りなど、Google Sheets のエラーが発生するとフローが停止します。プラットフォームは、Google API の URL と Spreadsheet ID を含むコンポーネントの生のエラーとともに、HTTP 404(または500)を返します。このバージョンにはフロー内のエラー分岐がなく、後続の Webhook Response では障害を捕捉できません。本番運用前に Spreadsheet ID と共有設定を確認し、エンドポイントのレスポンスをそのままエンドユーザーに表示しないでください。シートへの書き込みに失敗した場合は、再試行を判断する前に、書き込み失敗時の運用手順書の例に従ってください。

試験済みの重複防止版をダウンロードして設定する。

以前のエディター試験(2026年10月1日)

以下の再現表示は、以前の3ノード構成のエディター試験と、そのサンプル1行を記録したものです。現行のワークフローでは、10月8日に本番環境で試験済みの設定手順に従うか、試験済みワークフローをダウンロードしてください。以前のエディターでのマッピングでは、フィールドを検証していませんでした。

Universal Webhook → JSON Operations (JQ) → Append Rows

エディター試験、2026年10月1日 — 本番環境での実行ではありません

モデルを使わない検証済みの処理経路(2026年10月1日に試験済み)

  1. Universal Webhook

    まず、POSTを有効にし、ビルダーの試験用本文に架空のデータを入力します(試験用の名前はここでは伏せています):

    {"name":"<test name>","email":"test@example.com","request":"Workflow demo"}

    エディターの試験用コントロールを使います。この試験では、本番エンドポイントに HTTP リクエストを送信していません。

  2. JSON Operations (JQ)

    Webhook の JSON を接続し、JQ Expressionを選び、次の式を使います:

    {values: [[.body.name, .body.email, .body.request]]}

    リスト単体ではなく、このオブジェクトを返してください。コンポーネントはリストの結果を{"result": ...}で包むため、この試験では Append Rows で失敗しました。valuesを持つオブジェクトは、包まれずにそのまま渡されます。

  3. Append Rows (Google Sheets)

    JSON Operations の出力を Rows に接続します。承認済みの Google 接続とアプリで作成した試験用シートを選び、その Spreadsheet ID を設定します。Range は例えばSheet1!A:Cとし、USER_ENTEREDを設定します。エディターで実行し、シートを確認します。

  4. Sheet1!A1:C1

    記録された結果(試験用の名前はここでは伏せています)は、Sheet1!A1:C1に書き込まれた1行です:

    <test name> | test@example.com | Workflow demo
    AI Flowi Workflow の試験実行で書き込まれた1行を表示した Google Sheets。架空の試験用の名前、test@example.com、Workflow demo
    2026年10月1日のエディター試験の実際の出力:アプリで作成した Google Sheets に1行を書き込みました。

この確認の対象は、サンプル本文を使うエディターでの実行と、アプリで作成したシートのみです。Platform API Key を使った本番エンドポイントへの送信、アプリで作成していないシート、フィールドの検証は試していません。本番エンドポイントを共有する前に、Webhook 認証のガイダンスに従い、認証情報や非公開のペイロードを例に含めないでください。

再現表示の全ステップ、入力、出力、制限の出典:モデルを使わない検証済みの処理経路

モデル不要の構成で得た結果は、モデルを使う手順の実行成功を裏付けるものではありません。出典:期待される結果

この確認の対象は、サンプル本文を使うエディターでの実行と、アプリで作成したシートのみです。Platform API Key を使った本番エンドポイントへの送信、アプリで作成していないシート、フィールドの検証は試していません。本番エンドポイントを共有する前に、Webhook 認証のガイダンスに従い、認証情報や非公開のペイロードを例に含めないでください。

AI Flowi Workflow の試験実行で書き込まれた1行を表示した Google Sheets。架空の試験用の名前、test@example.com、Workflow demo
2026年10月1日のエディター試験の実際の出力:アプリで作成した Google Sheets に1行を書き込みました。

モデルを使う代替手順:前提条件

受信したテキストをモデルで解釈する必要がある場合に、この代替手順を使います。10月8日の本番試験は、このモデルを使う手順を対象としていません。その結果は、上記の入力検証付きのモデル不要ワークフローに適用されます。

  • AI Flowi Workflow エディターへのアクセスと、少量のデータを含むサンプル Webhook リクエストを送る送信元。
  • 設定済みの言語モデルと、対象スプレッドシートにアクセスできる Google アカウント接続。
  • Spreadsheet ID、対象の Range、各行に入れるフィールド。共有する例には、認証情報や非公開のペイロードを含めないでください。

モデルを使う手順

  1. まず、Universal Webhook(input_output.UniversalWebhook)を追加します。推奨 Webhook 設定の POST と Platform API Key の設定を使ってください。このノードのJSON出力は受信したリクエストデータです。以下のモデルを使う分岐に接続します。
  2. 次に、Type Convert(processing.TypeConverterComponent)を追加します。Universal Webhook.JSONをType Convert.Inputに接続し、Output TypeをMessageに設定します。
  3. 次に、Structured Output(llm_operations.StructuredOutput)を追加します。Type Convert.Message OutputをStructured Output.Input Messageに接続します。設定済みのLanguageModelをLanguage Modelに接続します。
  4. シートに必要なフィールドに合わせて、Output SchemaとFormat Instructionsを定義します。これらは必須入力です。次の接続には、Structured Output のJSON出力を使います。
  5. 次に、Append Rows(google_sheets.GoogleSheetsAppendRows)を追加します。Structured Output.Structured Output(JSON)をAppend Rows.Rowsに接続します。この入力はDataまたはJSONを受け取ります。Google Account、Spreadsheet ID、Range、Value Input Option は、推奨 Sheets 設定に従って設定してください。
  6. 少量のデータを含むサンプルリクエストを送信します。Append Rows を実行する前に、Webhook の JSON、変換した Message、構造化した JSON を確認します。その後、対象シートに新しい行があるか確認してください。

AI のステップを使う場面

受信したテキストの抽出、分類、その他の解釈が必要な場合に、AI のステップを使います。Webhook がすでに必要なフィールドを提供している場合は、推奨する入力検証付きのモデル不要ワークフローを使ってください。受信テキストにラベルを付ける必要がある場合は、AI のステップを選ぶ前に、テキスト分類についてお読みください。

期待される結果

推奨ワークフローについては、2026年10月8日の本番試験とインポート版の再試験で、認証済みの有効なリクエスト(200)に対して1行が追加され、無効な入力(422)やAPIキーの未指定・不正(403)では行が追加されなかったことを記録しています。2026年9月30日には、スプレッドシートの作成は成功しましたが、生の Webhook JSON を Append Rows に直接マッピングすると失敗しました。リクエストオブジェクト全体は行データではないためです。2026年10月1日には、サンプルの Webhook 本文を使ったエディター試験で、AI モデルを使わず、Universal Webhook → JSON Operations(JQ)→ Append Rows を通して、アプリで作成した Google Sheets に1行を書き込みました。この10月1日のエディター試験では、本番エンドポイントへの送信、アプリで作成していないシート、フィールドの検証は試していません。モデルを使う手順では、データ型に基づくノード間の接続を説明していますが、行が書き込まれるかどうかは、エンドポイントへのリクエスト、モデルの出力、スキーマ、Google 接続、シートの設定に依存します。以前のエディター試験も、10月8日のモデル不要の本番試験も、モデルを使う手順の実行成功を裏付けるものではありません。

関連情報:Webhookフィールドマッピング:Google Sheets向け。

よくあるエラー

  • Webhook データが表示されない:送信側のメソッドと、Universal Webhook からコピーしたエンドポイントを確認します。Webhook トリガーをご覧ください。
  • Structured Output にフィールドがない:Sheets を試験する前に、変換した Message と、必須のスキーマ・指示を確認します。
  • Append Rows が失敗する:Google 接続、Spreadsheet ID、Range、Rows に渡した JSON を確認します。Google 接続のガイダンスとよくあるエラーをご覧ください。

Webhook トリガー · Google 接続 · ワークフローの基本