Googleフォーム×GASで申込フォームを自動処理する方法

Googleフォームに申込みが届いたら、自動で確認メールを送り、スプレッドシートに整理し、Slackに通知まで届く仕組みをGASで構築する手順を解説します。

申込フォームへの対応は、多くの企業で手動作業が残っている業務の一つです。「フォームに回答が来たらメールを確認して、スプレッドシートに転記して、担当者にSlackで連絡する」という流れを毎回手動でやっていませんか?

Google Apps Script(GAS)を使えば、この一連の流れをすべて自動化できます。Googleフォームのトリガー機能とGASを組み合わせることで、回答が届いた瞬間に確認メール送信・データ整理・通知まで完了する仕組みが、無料で作れます。

この記事でできること

  • Googleフォームへの回答を自動でスプレッドシートに整理する
  • 申込者に自動確認メールを送信する
  • 担当者のSlackチャンネルに申込通知を自動送信する
  • フォーム回答をトリガーにGASを自動実行する

事前準備

以下のものを用意してください:

  • Googleアカウント(Gmailが使えるもの)
  • Googleフォーム(申込フォームを作成済みであること)
  • 回答を記録するGoogleスプレッドシート(フォームにリンク済みが望ましい)
  • Slack Incoming WebhookのURL(Slack通知を使う場合)

SlackのWebhook URLは、Slack APIページでアプリを作成し「Incoming Webhooks」を有効化することで取得できます。取得したURLは後で使います。

STEP1: GASエディタを開く

Googleフォームを開き、上部メニューの「その他」(点3つのアイコン)から「スクリプトエディタ」を選択します。これでフォームに紐づいたGASプロジェクトが開きます。

または、フォームに回答を集めているスプレッドシートを開き、メニューの「拡張機能」→「Apps Script」からエディタを開いても構いません。どちらの方法でも動作します。

エディタが開いたら、デフォルトで書かれているコードを削除して、次のSTEPで作成するコードを貼り付けます。

STEP2: フォーム回答処理のメイン関数を書く

以下のコードをエディタに貼り付けます。

// 設定値(自分の環境に合わせて変更)
const SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/XXXX/YYYY/ZZZZ';
const NOTIFY_EMAIL = 'admin@example.com'; // 管理者通知先

function onFormSubmit(e) {
  const responses = e.response.getItemResponses();
  
  // 回答データを取得
  const data = {};
  responses.forEach(function(item) {
    data[item.getItem().getTitle()] = item.getResponse();
  });
  
  const applicantEmail = data['メールアドレス'] || '';
  const applicantName = data['お名前'] || '申込者';
  
  // 1. 申込者に確認メールを送信
  sendConfirmEmail(applicantEmail, applicantName, data);
  
  // 2. 管理者に通知メールを送信
  sendAdminEmail(applicantName, data);
  
  // 3. Slackに通知
  sendSlackNotification(applicantName, applicantEmail, data);
  
  Logger.log('処理完了: ' + applicantName);
}

「メールアドレス」「お名前」の部分は、実際のフォームの質問文に合わせて変更してください。フォームの質問タイトルと完全に一致している必要があります。

STEP3: 確認メール・通知メール送信関数を書く

メイン関数の下に、以下の関数を追記します。

function sendConfirmEmail(toEmail, name, data) {
  if (!toEmail) return;
  
  const subject = '【受付完了】お申込みありがとうございます';
  const body = name + ' 様

この度はお申込みいただきありがとうございます。
以下の内容で受け付けました。

---
' +
    Object.entries(data).map(function(e) { return e[0] + ': ' + e[1]; }).join('
') +
    '
---

担当者より3営業日以内にご連絡いたします。
引き続きよろしくお願いいたします。';
  
  GmailApp.sendEmail(toEmail, subject, body);
}

function sendAdminEmail(name, data) {
  const subject = '【新規申込】' + name + ' 様';
  const body = '新しい申込がありました。

' +
    Object.entries(data).map(function(e) { return e[0] + ': ' + e[1]; }).join('
');
  
  GmailApp.sendEmail(NOTIFY_EMAIL, subject, body);
}

STEP4: Slack通知関数を書く

続けて、Slack通知用の関数も追記します。

function sendSlackNotification(name, email, data) {
  if (!SLACK_WEBHOOK_URL || SLACK_WEBHOOK_URL.includes('XXXX')) return;
  
  const details = Object.entries(data)
    .map(function(e) { return '- ' + e[0] + ': ' + e[1]; })
    .join('
');
  
  const message = {
    text: '新規申込がありました',
    attachments: [{
      color: '#36a64f',
      title: '申込者: ' + name + ' (' + email + ')',
      text: details
    }]
  };
  
  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(message),
    muteHttpExceptions: true
  };
  
  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}

STEP5: トリガーを設定して自動実行にする

コードを保存したら、GASのトリガーを設定します。

  1. エディタ左側のメニューから「トリガー」(時計アイコン)をクリック
  2. 右下の「トリガーを追加」をクリック
  3. 以下の設定を選択:
    • 実行する関数: onFormSubmit
    • イベントのソース: フォームから
    • イベントの種類: フォーム送信時
  4. 「保存」をクリックし、権限の確認画面でGoogleアカウントを選択して許可する

これでフォームに回答が届くたびに onFormSubmit 関数が自動実行されます。トリガー設定後、テスト用の回答を送信して動作を確認しましょう。

うまくいかないときのチェックリスト

  • メールが届かない: フォームの質問タイトルとコード内の文字列が完全に一致しているか確認(全角スペースも含む)
  • 権限エラーが出る: GASのトリガー設定時に出る権限確認でGmailとフォームへのアクセスを許可したか確認
  • Slack通知が来ない: SLACK_WEBHOOK_URLが正しく設定されているか、Slack側でWebhookが有効になっているか確認
  • 1日100件以上の申込がある: GASのGmail送信には1日あたり100件(無料アカウント)の制限があります。Google Workspaceなら1,500件まで対応
  • トリガーが実行されない: スクリプトエディタではなくフォームまたはスプレッドシートのスクリプトとしてトリガーを設定しているか確認

応用・発展

基本の自動処理が動いたら、以下の拡張も検討できます:

  • スプレッドシートへの自動転記と色付け: 申込内容をスプレッドシートの特定シートに転記し、新規申込行を黄色にハイライトする
  • Googleカレンダーへの自動登録: セミナー申込などの場合、申込者の名前と日程をカレンダーに自動登録できる
  • 回答内容によって送信先を切り替える: 「問い合わせ種別」の回答に応じて、担当部署ごとに異なるメールアドレスへ通知を分岐させる
  • Notionデータベースへの自動追加: Notion APIと組み合わせて、申込情報をNotionの顧客管理データベースに自動追加する

まとめ

  • GASのフォーム送信トリガーを使えば、申込フォームの対応を完全自動化できる
  • 申込者への確認メール・管理者通知・Slack通知が1つのスクリプトで同時に実行される
  • フォームの質問タイトルとコードの文字列を一致させることが動作の鍵
  • GASは無料で使えるため、初期コストゼロで業務自動化を始められる
  • 一度設定すれば、以降は完全に自動で動き続け、手動対応の工数をゼロにできる

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA