Googleフォームでアンケートなどを作成した後、自動返信メールを出したい時があります。アドオンの機能もありますが、無料の場合制限もあります。今回はコピーするだけで簡単にGoogleフォームで送信された人へ自動返信メールを出し、そこに添付ファイルを(PDFファイル)付ける方法を注意点なども含めご紹介します。
Google Apps Script(GAS)を使えば、無料で、しかも確実に自動化できます。初心者の方がハマりやすい「承認」の壁も、ステップバイステップで解説します。
目次
STEP 1:事前準備(Googleドライブとフォーム)
まずは「送るもの」と「受け取る場所」を整えます。
- 資料PDFをアップロード:GoogleドライブにPDFを保存し、ファイルIDをコピーしておきます。
- 【注意点!】 IDとは、ファイルURLの
d/と/viewの間にある長い英数字のことです。
- 【注意点!】 IDとは、ファイルURLの
- フォームを作成:新規作成します。
- 【最重要!】メール収集をONにする:
- 設定タブ > 回答 > 「メールアドレスを収集する」を「確認済み」または「入力必須」に必ず設定してください。これがないと、プログラムは送り先がわからずエラーになります。
メールに添付したいPDFファイルをGoogleドライブにアップします。そのファイルの上で右クリックしIDを取得しましょう。

ファイルIDはこれ↓


STEP 2:魔法のコードを貼り付ける
作成したfoamから Apps Sptiptを表示させましょう。

- フォーム右上「︙」メニュー > 「Apps Script」を選択。
- もともとあるコードを消して、以下のコードを貼り付けます。
JavaScript
function autoReply(e) {
const email = e.response.getRespondentEmail(); // 回答者のメアド取得
const fileId = "ここにメモしたファイルIDを貼る"; // 【ここを書き換え】
const subject = "資料送付:アンケート回答ありがとうございます";
const body = "本日はありがとうございました。資料を添付いたします。";
const file = DriveApp.getFileById(fileId);
MailApp.sendEmail({
to: email,
subject: subject,
body: body,
attachments: [file.getAs(MimeType.PDF)]
});
}

STEP 3:最大の難所「承認(許可)」を突破する
ここが一番間違いやすいポイントです!コードを保存しただけでは動きません。
- 「実行」ボタン(再生マーク)を一度押す。
- 【注意点!】 おそらく「TypeError…」というエラーが出ますが、その前に「承認が必要です」という画面が出たらじつはこれが成功です。
- Edge/Chromeのブロックに注意:画面が出ない場合は、アドレスバー右端の「ポップアップブロック」を確認し、許可してください。下図参照
- 警告画面を突破する:
- 「詳細」→「プロジェクト名(安全ではないページ)に移動」→「許可」の順にクリック。これをしないとPDFを読み込む権限が与えられません。


STEP 4:自動送信のスイッチを入れる(トリガー設定)
最後に、「フォームが送られたらプログラムを動かす」という設定をします。
- 画面左の「時計アイコン(トリガー)」をクリック。
- 「+ トリガーを追加」をクリックし、以下を設定。
- 実行する関数:
autoReply - イベントのソース:「フォームから」
- イベントの種類:「フォーム送信時」
- 実行する関数:
- 「保存」を押す。


STEP 5:動作確認(プレビューから送信)
- フォームの「目玉アイコン(プレビュー)」から、実際に自分で回答して送信します。
- 自分のメールアドレスに、PDFが添付されたメールが届いたら完成です!
まとめ:本番で使い回す時のコツ
- PDFを変えたい時:コード内の
fileIdを書き換えるだけ! - フォームを新しく作る時:新しいフォームで「STEP 2〜4」を繰り返せばOKです。
その他 アラカルト |もしうまくいかない場合の対処法
Googleフォームを消しても、スクリプトのファイルだけがGoogleドライブに残っていることがあります。
- Google ドライブを開きます。
- 検索窓に
type:scriptと入力して検索してください。 - 出てきた「無題のプロジェクト」や、作成した覚えのあるスクリプトファイルを右クリックして「ゴミ箱に移動」してください。
- これで、裏側で動いているかもしれない中途半端なプログラムを掃除できます。
それは驚きますよね。GAS(Google Apps Script)を触っていると時々遭遇する、いわば「ちょっとした接触不良」のようなものです。
そのエラーが出るタイミングによって、原因は主に2つ考えられます。
これはGoogleのサーバーとの通信が一時的に途切れたときによく出ます。
- 解決策: 数秒待ってから、もう一度「保存」や「保存ボタン」を押してみてください。たいていは2回目で成功します。
コードの書き方に、Google側が処理できないような間違い(文法ミスなど)があるときに出ることがあります。
- チェックポイント:
- 最後に
}(波カッコ)を消してしまっていないか。 - どこか一箇所、文字が「全角」になっていないか(特にカッコやセミコロン)。
- 最後に
もし、トリガー(時計マーク)を設定しようとしてこのエラーが出るなら、一度ブラウザを更新(再読み込み)してみてください。 「F5」ファンクションキーでリロード。
今回のように、フォームのメニューからApps Scriptを開いて作った場合、これを**「コンテナバインド・スクリプト」**と呼びます。 その名の通り、そのフォームの中にプログラムが「バインド(束縛)」されています。
- メリット: 「どのフォームに誰が回答したか」を自動的に認識してくれるので、設定がとても楽です。
- デメリット: 別の新しいフォームを作った場合、そのスクリプトは自動的には付いてきません。
新しく別のセミナー用のフォームを作る場合は、以下の手順になります。
- 新しいフォームを作る。
- そのフォームからApps Scriptを開く。
- 前のコードをコピーして貼り付ける。
- トリガー(時計マーク)をもう一度設定する。
「無題のプロジェクト」がまた増えてしまうように感じて「無駄だな」と思われるかもしれませんが、GASの世界では、「アンケートA用」「アンケートB用」と、それぞれに専用のスイッチ(トリガー)と台本(コード)を用意するのが一般的な管理方法です。
実は、1つのスクリプトで「複数のフォーム」を管理する高度な方法もあります。 しかし、それをやろうとすると「このメールはアンケートAの返事、こっちはアンケートBの返事…」と、プログラムの中で複雑な仕分け作業を書かなければならず、初心者の方には少しハードルが高くなります。
「無題のプロジェクト」という名前のままだと後で分からなくなるので、以下の工夫をすることをおすすめします。
- プロジェクトに名前をつける: エディタの左上にある「無題のプロジェクト」をクリックして、「セミナーアンケート自動返信」のように名前を変えておきましょう。こうすればGoogleドライブで検索したときに、どのフォーム用のものか一目で分かります。
- 新しいフォームを作るたびに、同じ作業を「セット」で行うのが基本。
- 慣れるまでは「1フォーム = 1スクリプト」で管理するのが、エラーも起きにくく一番安全です!
