【管理が楽!】GASでGoogleフォーム自動返信メールを作る方法(文面を外部ファイル化)

皆さん。昨今いかがお過ごしですか。僕はなんやかんや忙しくしております。

その中でも、色々WEB周りを仕事としてやらせていただいているなかで、いろいろ発信できそうな諸々がたまりましたので、少しまた記事にでもしていこうかなと思ってます。

というわけで1つ目はGoogleフォームでございます。

Googleフォームでお問い合わせフォームを運用する際、「自動返信メール」は必須機能です。しかし、GAS(Google Apps Script)のコード内に直接メール文面を書き込んでしまうと、文章を少し直すだけでコードを触る必要があり、誤ってプログラムを壊してしまうリスクもあります。

そこで今回は、メールの件名と本文をGoogleドライブ上のテキストファイルで管理し、GASでそれを読み取って送信するシステムの作り方を徹底解説します!

これなら、コードが分からない担当者でもテキストファイルを編集するだけで、いつでもメール文面を更新できるようになります。

本記事に記載されたコードや手順を実行したことによって生じたいかなる損害・トラブルについても、筆者および所属組織は一切の責任を負いかねます。

システムの変更やコマンドの実行は、必ずご自身の責任と判断のもとで行ってください。

また、本記事の内容は筆者個人の見解であり、所属する企業や団体を代表するものではありません。

目次

ステップ1:Googleフォームの準備

まずは通常通り、Googleフォームを作成します。まあこのあたりは問題ないでしょう。

  1. Googleドライブで「新規」>「Google フォーム」を選択。
  2. 以下の項目を作成してください(例)。
    • お名前(記述式)
    • メールアドレス(記述式)
    • お問い合わせ内容(段落)

ステップ2:メール文面用テキストファイルの作成

ここが今回のポイントです。メールの件名と本文を保存するテキストファイルを作成します。

  1. Googleドライブの好きなフォルダで「右クリック」>「その他」>「アプリを追加」から「Text Editor」等を探すか、PCのメモ帳で作成した.txtファイルをアップロードします。(※一番簡単なのは、Googleドキュメントを作成し、その「ファイルID」を使う方法ですが、今回は「テキストファイル(.txt)」として解説します)
  2. ファイルの内容を以下のように記述します。

【作成するテキストファイルの内容例】

件名:お問い合わせありがとうございます
本文:
{{お名前}} 様

この度はお問い合わせいただき、誠にありがとうございます。
以下の内容で受け付けいたしました。

--------------------------------------------------
【お名前】
{{お名前}}

【お問い合わせ内容】
{{お問い合わせ内容}}
--------------------------------------------------

担当者が確認後、改めてご連絡いたします。
※このメールは自動返信です。
  1. 作成したファイルの「ファイルID」をメモしておきます。
    • ファイルIDは、ファイルを開いた時のURL(https://drive.google.com/file/d/●●●●●/view)の「●●●●●」の部分です。

ステップ3:GASコードの記述(外部ファイル読み込み版)

フォームの「その他(︙)」から「スクリプトエディタ」を開き、以下のコードを貼り付けてください。

/**
 * フォーム送信時に実行されるメイン関数
 */
function sendAutoReply(e) {
  // 1. Googleドライブ上のテキストファイルIDを指定(ステップ2でメモしたもの)
  const FILE_ID = 'ここにあなたのファイルIDを貼り付けてください';
  
  // 2. フォームの回答を取得
  const itemResponses = e.response.getItemResponses();
  const respondentEmail = e.response.getRespondentEmail() || ""; // メルアド収集設定の場合
  
  let formData = {};
  itemResponses.forEach(item => {
    formData[item.getItem().getTitle()] = item.getResponse();
  });

  // もし「回答者からの入力」でメルアドを取得している場合、フォーム項目名に合わせて取得
  const email = respondentEmail || formData['メールアドレス'];
  
  // 3. 外部テキストファイルから文面を取得
  const templateFile = DriveApp.getFileById(FILE_ID);
  const fullContent = templateFile.getBlob().getDataAsString('utf-8');

  // 4. 件名と本文を分離(1行目を件名、それ以降を本文とする)
  const lines = fullContent.split('\n');
  let subject = lines[0].replace('件名:', '').trim();
  let body = lines.slice(1).join('\n').replace('本文:', '').trim();

  // 5. プレースホルダー({{項目名}})を実際の回答に置換
  for (let key in formData) {
    let reg = new RegExp('{{' + key + '}}', 'g');
    subject = subject.replace(reg, formData[key]);
    body = body.replace(reg, formData[key]);
  }

  // 6. メール送信
  if (email) {
    GmailApp.sendEmail(email, subject, body);
  } else {
    console.error("メールアドレスが見つからなかったため送信をスキップしました。");
  }
}

【解説:このコードの仕組み】

  • DriveApp.getFileById(FILE_ID):指定したIDのファイルをGoogleドライブから探します。
  • getDataAsString('utf-8'):ファイルの中身をテキストとして読み込みます。
  • replace('{{項目名}}', 回答):テキスト内の{{お名前}}といった部分を、実際のフォーム回答に自動で書き換えます。これにより、親近感のあるパーソナライズされたメールが送れます。

ステップ4:トリガーの設定と権限承認

前回の記事同様、スクリプトを自動で動かすための設定が必要です。

GASエディタ左側の「時計アイコン(トリガー)」をクリック。「トリガーを追加」を選択。

「実行する関数:sendAutoReply」「イベントのソース:フォームから」「イベントの種類:フォーム送信時」にして保存。

重要: 承認画面が出たら、自分のアカウントを選択し「詳細」→「(プロジェクト名)に移動」→「許可」の順に進めてください。

ステップ5:テストと運用

実際にフォームへ入力し、メールが届くか確認しましょう。

ここが便利!:

今後、メールの挨拶文を変えたい、署名を追記したいといった場合は、GASの画面を開く必要はありません。 ステップ2で作ったGoogleドライブ上のテキストファイルを書き換えて保存するだけで、次回の送信から自動的に新しい内容が反映されます。

まとめ

さて、色々設定してまいりましたが、一応GoogleWorkspaceの運用は意外と複雑です。

無料で出来る範囲にも、最近制限が入ったりする場合もあり、色々変わってくるかもしれません。

この記事も、実は書き始めてからそこそこ経って、ちょっと疲れて放ったらかし。

少しゆっくり書きすぎているので、もし違ったら問い合わせから連絡もらえると嬉しいです。適宜修正します。

使えるうちはこれでも問題ないですが、使えなくなったときのことを考え、Googleフォーム以外のフォームツールも考えても良いかもしれませんね…

よかったらシェアしてね!
  • URLをコピーしました!
目次