「GoogleスプレッドシートのデータをAIで処理したいけど、GAS(Google Apps Script)で複雑なコードを書くのは無理…」
「n8nは便利だけど、スプレッドシート上の『ボタン』を押したタイミングで動かしたい…」
その悩み、n8nとGASを連携させることで完璧に解決します。
実は、この2つは役割分担をすると最強の相性を発揮します。GASは「現場のスイッチ(トリガー)」を担当し、n8nは「裏側の重い処理(AI・外部連携)」を担当するのです。
本記事では、「スプレッドシート上のボタンを押すと、選択したデータがn8nに飛び、AI処理されて返ってくる」という魔法のような仕組みを、コピペOKのコード付きで解説します。
【結論】GASは「ボールを投げるだけ」に専念させるのが正解
多くの人が躓くのが「GASの中ですべて完結させようとする」ことです。しかし、GASでのAPI連携や複雑なロジック構築はエラーの温床です。
成功の鉄則:
- GASの役割: データをまとめてn8nへ投げる(Webhook送信)だけ。
- n8nの役割: 受け取ったデータをAI解析、Slack通知、別ツールへの登録など、複雑な処理を一手に引き受ける。
この構成なら、GASのコードはわずか数行で済み、メンテナンスも圧倒的に楽になります。
自動化の仕組み:Webhook(ウェブフック)という「直通トンネル」
この連携の鍵となるのがWebhookです。
イメージしてください。GASが「スプレッドシートの内容」を書いた手紙を、n8nという「住所(URL)」に投げ込む。するとn8nがそれを受け取って仕事を始める。ただそれだけの仕組みです。
【完全ガイド】実践!GAS × n8n 連携ステップ
では、実際に動くシステムを作りましょう。
Step 1: n8nで「受け取り口」を作る
まず、n8n側でデータを受け取る準備をします。
- n8nのワークフロー画面で [Webhook] ノードを追加します。
- [HTTP Method] を POST に設定します(重要!)。
- [Path] に好きな名前(例:
gas-hook)を入力します。 - [Test URL] をクリックしてコピーします。
- 最後に [Execute Node] ボタンを押し、「待ち受け状態」にしておきます。
Step 2: GASで「投げる機能」を作る(コピペOK)
スプレッドシートを開き、メニューの [拡張機能] > [Apps Script] をクリックします。
以下のコードをコピペし、YOUR_N8N_WEBHOOK_URL の部分を先ほどコピーしたURLに書き換えてください。
function sendDataToN8n() {
// ▼ここにn8nのWebhook URLを貼り付ける
const n8nUrl = “
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 現在選択している行のデータを取得(例:A列〜D列)
const activeRow = sheet.getActiveRange().getRow();
const data = sheet.getRange(activeRow, 1, 1, 4).getValues()[0];
// 送信するデータ(荷物)を作る
const payload = {
“rowIndex”: activeRow,
“colA”: data[0], // A列の値
“colB”: data[1], // B列の値
“colC”: data[2], // C列の値
“colD”: data[3] // D列の値
};
const options = {
“method”: “post”,
“contentType”: “application/json”,
“payload”: JSON.stringify(payload)
};
// n8nに投げる!
UrlFetchApp.fetch(n8nUrl, options);
Browser.msgBox(“n8nにデータを送信しました!🚀”);
}
Step 3: スプレッドシートにボタンを設置する
いちいちスクリプトエディタを開くのは面倒なので、シート上に実行ボタンを作ります。
- スプレッドシートのメニュー [挿入] > [図形描画] を選択。
- 四角形などを描き、「送信」などのテキストを入れ、保存して閉じます。
- シート上に図形が表示されたら、クリックして右上の「︙」から [スクリプトを割り当て] を選択。
- 関数名
sendDataToN8nを入力してOKを押します。
これで、ボタンを押すだけで現在選択している行のデータがn8nに飛ぶようになりました!
[応用テクニック] n8nで処理した結果を書き戻すには?
「送る」だけでなく、n8nでのAI処理結果(例:文章の要約や翻訳)をシートに書き戻したい場合、n8nの最後に [Google Sheets] ノードを追加します。
- Operation: Update(更新)を選択。
- Row: Webhookから送られてきた
rowIndexを使って、元の行を指定します。
これにより、「ボタンを押す → AIが考える → 同じ行の隣の列に答えが書き込まれる」というアプリのような挙動が実現します。
[注意点とトラブルシューティング]
エラー:Exception: Request failed for…
n8n側が「待ち受け状態(Execute Nodeを押した状態)」になっていない時にGASを実行すると発生します。
本番運用の際は、n8nのWebhook URLを Production URL(…webhook/…)に書き換え、ワークフローを Active にすることを忘れないでください。
JSONの形式ミス
GASから送るデータは必ず JSON.stringify() で文字列化する必要があります。上記のコード例通りに書けば問題ありません。
よくある質問 (Q&A)
Q1: 無料のGoogleアカウントでも使えますか?
はい、GASは無料のGoogleアカウントで利用可能です。n8n側も無料版(Desktop)やトライアルで問題なく連携できます。
Q2: 実行回数の制限はありますか?
GASの UrlFetchApp には1日あたりの実行回数制限(一般アカウントで約20,000回/日)がありますが、個人の業務自動化レベルであればまず超えません。
まとめ
n8nとGASを連携させると、スプレッドシートがただの表計算ソフトから「高機能な業務アプリ」に進化します。
- GAS: データを拾って投げる係
- n8n: データを受け取って料理する係
この分担さえ守れば、実装は驚くほど簡単です。ぜひ、あなたのシートに「魔法のボタン」を追加してみてください。


コメント