『n8n×Googleフォーム』スプレッドシート連携によるCSVデータ自動処理システム【DX推進の実践ガイド】
全般
研修管理の面倒な事務作業、すべて自動化しませんか?この記事では、n8nを使い、Googleフォームでの申込受付からリマインド、当日の出欠管理、修了証の自動発行までを実現するシステム構築法を徹底解説。コピペOKの手順で、誰でも業務を劇的に効率化できます。
研修担当者の皆様は、日々の業務において以下のような課題をお持ちではないでしょうか。
「参加者リストへの手入力が面倒…」
「リマインドメールの送信漏れが怖い…」
「当日の出欠確認に手間がかかる…」
「研修後の修了証作成と送付が大変…」
本来であれば、研修プログラムの品質向上や受講者のフォローアップといったコア業務に注力すべきところ、こうした定型的な事務作業に多くのリソースを奪われてしまっているのが実情ではないでしょうか。
本記事では、そのような課題を解決する具体的な手法をご紹介します。ノーコード自動化ツール「n8n」を使い、Googleフォームでの申し込みから修了証の発行まで、研修運営にまつわる一連の作業を完全自動化するシステムを、ゼロから構築する方法を徹底解説します。
専門的なプログラミング知識は不要です。この記事を読みながら一緒に手を動かすだけで、あなただけの優秀な「研修管理アシスタント」が手に入ります。

まず、自動化の起点となるフォームとスプレッドシートを準備します。
研修の申込フォームを作成します。今回はシンプルに以下の3項目とします。
・氏名
・会社名
・メールアドレス

申込者の情報を一元管理するスプレッドシートを作成します。後の処理で使うため、以下の列を必ず用意してください。
・A列:氏名
・B列:会社名
・C列:メールアドレス
・D列:ステータス(申込済、リマインド済、出席、完了など)
・E列:申込日時
・F列:出欠状況
・G列:修了証ステータス

最初のステップとして、Google Formsに申し込みがあった瞬間に内容を記録し、受付完了メールを自動送信する仕組みを構築します。ここではn8nのWebhook機能を使い、Googleフォームからの送信を即座に検知します。

この自動化の起点となるWebhookノードを設定します。これは、外部(今回はGoogle Forms)からのデータを受け取るための専用の窓口(URL)を作成する機能です。
Google Formsから送信される申込データをリアルタイムで受け取り、ワークフローを開始します。
1.新しいワークフローの最初のノードとして「Webhook」を選択します。
2.設定画面を開き、「Test URL」をコピーします。
3.「HTTP Method」を「POST」に設定します。
n8nがデータを待っている間に、Google Formsからデータを送信する設定を行います。これには「Google Apps Script」という簡単なプログラムを使います。
1.事前準備で作成したGoogleフォームを開きます。
2.右上のその他アイコン(︙)から「Apps Script」を選択します。
3.開いたエディタ画面に、以下のコードをコピー&ペーストします。
function onFormSubmit(e) { // n8nのWebhookノードでコピーしたTest URLを貼り付け const webhookUrl = ‘ここにn8nのTest URLを貼り付け’; // フォームの質問と回答を取得 const formResponse = e.response; const itemResponses = formResponse.getItemResponses();
// 送信するデータを作成 const payload = {}; itemResponses.forEach(function(itemResponse) { const question = itemResponse.getItem().getTitle(); const answer = itemResponse.getResponse(); payload[question] = answer; }); // Webhookにデータを送信 const options = { ‘method’: ‘post’, ‘contentType’: ‘application/json’, ‘payload’: JSON.stringify(payload) };
UrlFetchApp.fetch(webhookUrl, options); } |
|---|
4.コード内の’ここにn8nのTest URLを貼り付け’の部分を、先ほどn8nでコピーしたTest URLに書き換え、保存します。
5.エディタの左側にある「トリガー」(時計のアイコン)をクリックします。
6.「トリガーを追加」ボタンを押し、以下の通りに設定して保存します。
・実行する関数を選択:onFormSubmit
・イベントのソースを選択:フォームから
・イベントの種類を選択:フォーム送信時
7.設定が完了したら、実際にGoogleフォームからテスト回答を1件送信します。
8.n8nの画面に戻ると、Webhookノードがデータを受信し、成功表示に変わります。これで連携は完了です。

次に、受け取ったデータに後続の処理で必要となる情報を付与します。ここでは、申込者のステータス管理の第一歩として「申込済」のラベルと、申込日時を記録します。
1.Setノードを追加します
2.設定を開き「Add Field」ボタンをクリックします。
3.1つ目の情報(ステータス)を追加します。
・Nameの欄に「status」と入力します。
・Valueの欄に「申込済」と入力します。
4.もう一度「Add Field」ボタンをクリックします。
5.2つ目の情報(申込日時)を追加します。
・Nameの欄に「timestamp」と入力します。
・Valueの欄に「{{ new Date().toLocaleString() }}」と入力します。
6.「Include Other Input Fields」のボタンをONにします。

加工したデータを、用意しておいたスプレッドシートに自動で書き込みます。Webhookから受け取ったデータと、Setノードで追加したデータを、それぞれ対応する列に指定します。
設定画面で、上から順番に以下の項目を設定してください。
Credential to connect with
・「Select Credential」をクリックし、n8nに連携済みのGoogleアカウントを選択します。もし初めて連携する場合は、新しい認証情報を作成してください。
Operation
・「Append or Update Row」と表示されているプルダウンメニューをクリックし、「Append Row」を選択します。
Document
・「Choose…」をクリックすると、Googleドライブにあるスプレッドシートの一覧が表示されます。Step 1で作成した研修管理用のスプレッドシートを選択してください。
Sheet
・「Choose…」をクリックすると、上記で選択したスプレッドシートに含まれるシート(タブ)の一覧が表示されます。Step 1で作成した参加者リストのシート(通常は “シート1” など)を選択してください。
Columns
・シートを選択すると、「Columns」という新しい設定項目が表示されます。スプレッドシートの各列(A列, B列…)に、n8nが持っているどのデータを入れるかを対応付けます。
・氏名:{{ $json.body.氏名 }}
・会社名:{{ $json.body.会社名 }}
・メールアドレス:{{ $json.body.メールアドレス }}
・ステータス:{{ $json.status }}
・申込日時:{{ $json.timestamp }}
最後に、申し込みが完了したことを参加者に伝えるメールを送信します。本文に参加者の名前を自動で挿入することで、パーソナライズされたメールを送ることができます。
1.Gmailノードを追加し、設定画面を開きます。
2.下記のように設定します。
・To:{{ $json.body.メールアドレス }}
・Subject:【株式会社〇〇】研修へのお申し込みありがとうございます
・Text:
`{{ $json.body.氏名 }}様
この度は研修にお申し込みいただきありがとうございます。
以下の内容で受付いたしました。
会社名:{{ $json.body.会社名 }}`

次に、毎日決まった時間にスプレッドシートをチェックし、該当者にリマインドメールを送る仕組みを作ります。これで送信漏れの心配がなくなります。

このワークフローは、何かのデータを受け取って動くのではなく、決まった時間になったら自動で動き出す必要があります。その「時間になったら」というのを設定するのがこのノードです。
1.「Schedule Trigger」ノードを追加し、以下の通り設定します。
・Trigger Interval:Days(毎日実行)
・Days Between Triggers:1
・Trigger at Hour:9am(朝9時)
・Trigger at Minute:0(0分)
この設定で「毎日、朝9時0分に実行する」という命令になります。

ノードを追加し、事前準備で作成したスプレッドシートとシート名を設定することでスプレッドシートから全参加者のデータを取得します。
取得した全データを1人ずつ処理できるように分割します。設定はデフォルトの「Batch Size:1」のままで大丈夫です。
「ステータスが “申込済”」の参加者だけを次の処理へ進ませます。IFノードを追加し、下記設定を行います。
・Value 1:{{ $json.ステータス }}
・Operation:String→Equals
・Value 2:申込済

IFノードで判定された対象者にリマインドメールを送信します。Toに{{ $json.メールアドレス }}を指定し、件名と本文を作成します。
メールを送った人のステータスを「リマインド済」に更新し、二重送信を防ぎます。
Sheetノードを追加し、下記のように設定します。
・Operation:Update
・Key:メールアドレス (更新対象を特定するキー)
・Value:{{ $json.メールアドレス }}
Columns→Update
・ステータス:リマインド済
ここがこの自動化システムのハイライトです。研修当日に参加者が出欠を記録した直後に、修了証が自動で発行され、メールで送付されるまでの一連の流れを、一つのワークフローで実現します。

研修当日の受付用QRコードからのアクセスを検知する「受付窓口」です。
1.Webhookノードを追加します。
2.設定を開き、「HTTP Method」を「GET」に設定します。
3.Test URLをコピーしておきます。このURLの末尾に ?email=test@example.com のようにパラメータを付けてアクセスすることで、n8nに出席者のメールアドレスを渡します。
Webhookがメールアドレスを受け取ったら、受付した参加者のステータスを「出席」に更新します。
1.Google Sheetsノードを追加します。
2.設定画面を開き、下記のように設定します。
・Operation:Update Row
・Key:メールアドレス
・Value:{{ $queries.email }}
Columns→Update
・出欠状況:出席
・ステータス:出席
Options→Return Value:All Values
前のステップで本当に出席記録が正しく更新されたかを確認する、重要なポイントです。もし、QRコードを読み込んだ人が名簿に存在しない場合(更新が失敗するケース)などで、後続の処理に進むのを防ぎます。
1.IFノードを追加します。
2.下記のように設定します。
・Value 1:{{ $node[“Google Sheets (出席状況記録)”].json.出欠状況 }}
・Operation:Equals
・Value 2:出席
この設定により、名簿にない不正なアクセスや、何らかの理由で更新が失敗したケースでは処理が止まり、意図しない修了証の発行を確実に防ぐことができます。

このノードでは、前のステップで出席が確認された参加者の氏名データを、外部の画像・PDF生成サービスに送り、パーソナライズされた修了証ファイル(のURL)を受け取ります。この種の自動生成には、様々なAPIサービスが利用できます。
(例)
Canva API:最も有力な選択肢です。デザイン性が高く、多くのテンプレートを利用できます。
Googleスライド + Google Apps Script:プログラミング知識が少し必要ですが、無料で実現できる方法です。
HTTP Requestノードが生成した修了証のダウンロードURLを、出席者本人にメールで送信する役割を担います。QRコードを読み取ってから数分以内にこのメールが届くことで、参加者にスムーズで感動的な体験を提供できます。
1.Gmailノードを追加し、設定画面を開きます。
2.下記のように設定します。
・Credential to connect with:連携するGoogleアカウントを選択
・To:{{ $json.メールアドレス }}
・Subject:メールの件名
・Text:下記を参考に入力
{{ $json.氏名 }}様 この度は、〇〇研修にご参加いただき、誠にありがとうございました。 ご参加の証として、修了証を発行いたしました。 以下のURLよりダウンロードいただけます。 {{ $node[“HTTP Request (修了証生成)”].json.body.publish_url }} またのご参加を心よりお待ちしております。 株式会社〇〇 |
|---|
この設定により、出席者一人ひとりに対して、その人専用の修了証ダウンロードリンクが記載された、パーソナライズされたメールが自動で送信されます。
修了証を送付した人のステータスを「完了」に更新します。
1.Google Sheetsノードを追加します。
2.設定画面を開き、下記のように設定します。
・Operation:Update Row
・Key:メールアドレス
・Value:{{ $json.メールアドレス }}
Columns→Update
・修了証ステータス:発行済
・ステータス:完了
以上で、本記事で目標としていたシステム構築は完了です。
・申込受付と名簿作成
・リマインドメールの自動送信
・出欠記録および修了証の発行
これら3つのワークフローが連携することで、従来手作業で行っていた一連の研修管理業務を自動化する基盤が整いました。本システムを活用することで、定型的な事務作業にかかる工数を削減し、研修担当者が本来注力すべき企画や受講者フォローといった業務により多くのリソースを配分することが可能になります。
本記事で解説した構成は、あくまで基本的なモデルです。まずはこの仕組みをベースとして運用を開始し、実際の業務フローに合わせて必要な項目の追加や調整を行ってください。
株式会社TWOSTONE&Sonsグループでは
60,000人を超える
人材にご登録いただいており、
ITコンサルタント、エンジニア、マーケターを中心に幅広いご支援が可能です。
豊富な人材データベースと創業から培ってきた豊富な実績で貴社のIT/DX関連の課題を解決いたします。
幅広い支援が可能ですので、
ぜひお気軽にご相談ください!