皆さん。昨今いかがお過ごしですか。僕はなんやかんや忙しくしております。
その中でも、色々WEB周りを仕事としてやらせていただいているなかで、いろいろ発信できそうな諸々がたまりましたので、少しまた記事にでもしていこうかなと思ってます。
というわけで1つ目はGoogleフォームでございます。
Googleフォームでお問い合わせフォームを運用する際、「自動返信メール」は必須機能です。しかし、GAS(Google Apps Script)のコード内に直接メール文面を書き込んでしまうと、文章を少し直すだけでコードを触る必要があり、誤ってプログラムを壊してしまうリスクもあります。
そこで今回は、メールの件名と本文をGoogleドライブ上のテキストファイルで管理し、GASでそれを読み取って送信するシステムの作り方を徹底解説します!
これなら、コードが分からない担当者でもテキストファイルを編集するだけで、いつでもメール文面を更新できるようになります。
本記事に記載されたコードや手順を実行したことによって生じたいかなる損害・トラブルについても、筆者および所属組織は一切の責任を負いかねます。
システムの変更やコマンドの実行は、必ずご自身の責任と判断のもとで行ってください。
また、本記事の内容は筆者個人の見解であり、所属する企業や団体を代表するものではありません。
ステップ1:Googleフォームの準備
まずは通常通り、Googleフォームを作成します。まあこのあたりは問題ないでしょう。
- Googleドライブで「新規」>「Google フォーム」を選択。
- 以下の項目を作成してください(例)。
- お名前(記述式)
- メールアドレス(記述式)
- お問い合わせ内容(段落)

ステップ2:メール文面用テキストファイルの作成
ここが今回のポイントです。メールの件名と本文を保存するテキストファイルを作成します。
- Googleドライブの好きなフォルダで「右クリック」>「その他」>「アプリを追加」から「Text Editor」等を探すか、PCのメモ帳で作成した
.txtファイルをアップロードします。(※一番簡単なのは、Googleドキュメントを作成し、その「ファイルID」を使う方法ですが、今回は「テキストファイル(.txt)」として解説します) - ファイルの内容を以下のように記述します。
【作成するテキストファイルの内容例】
件名:お問い合わせありがとうございます
本文:
{{お名前}} 様
この度はお問い合わせいただき、誠にありがとうございます。
以下の内容で受け付けいたしました。
--------------------------------------------------
【お名前】
{{お名前}}
【お問い合わせ内容】
{{お問い合わせ内容}}
--------------------------------------------------
担当者が確認後、改めてご連絡いたします。
※このメールは自動返信です。
- 作成したファイルの「ファイルID」をメモしておきます。
- ファイルIDは、ファイルを開いた時のURL(
https://drive.google.com/file/d/●●●●●/view)の「●●●●●」の部分です。
- ファイルIDは、ファイルを開いた時のURL(

ステップ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フォーム以外のフォームツールも考えても良いかもしれませんね…

