【アドオン・GAS】Googleフォームで自動返信する方法

Googleフォームを使ってアンケートや出席、お問い合わせフォームなんかを作ったこともあるのではないでしょうか。Googleフォームは簡単に使えて便利だけど、欲を言えば自動で返信してくれる機能が欲しいですよね。そこで今回はGoogleフォームで送信したら自動で返信する方法を紹介したいと思います。

  • Googleフォームのアドオンで自動返信
  • GoogleAppsScriptで自動返信

紹介するのは上の2つの方法。自分がやりたい方で自動返信の設定をしてみてください。では、やっていきましょう。

Googleフォームの自動返信をアドオンで行う

まずは、自動返信をアドオンで行う方法について見ていきたい。今回はとりあえずお問い合わせフォームを用意して、これが送信されたらそのメールアドレスに対して自動返信するようにしたい。フォームを作ったら[アドオン]を選択してFormNotificationsっていうやつを追加しよう。

Form Notificationsを追加したら、アドオンのボタンから設定しましょう。右上からクリックすると、Form Notificationsっていうのが出てくるからそれをクリック。Openと進みましょう。

すると右側に設定画面が出てくる。[Thank you email]っていうのがGoogleフォームから送信された時に自動送信するメール設定だからこれをONにしておく。

どのメールアドレスに対して自動送信するのかを選べるけど、これはフォームの中にあるメードアドレスの欄を指定しよう。

これでGoogleフォームに何かを入力して送信してみると、自動でこんなメールが返ってくる。

文言はそのままだと英語だけど、この文言を変えればそれなりに使えそうですよね。Form Notificationsの設定から以下の2つの項目を変えると文言を変更することができる。

  • Notification email subject・・・メールのタイトル
  • Notification email body・・・・メールの内容

これをこんな風にそれっぽい文言にしておきましょう。お問い合わせフォームだからこんな感じでいいや。

書いたら[Save configuration]を押して保存。そうするとこんなメールになりました。

送信元が[お問い合わせフォーム]となってしまっているのがちょっと気に入らないですね。この名前はフォームのタイトルとなっているから、フォームのタイトルを変えます。

フォームのタイトルをガジェランにするとこんな感じですね。

一番下に[Form Notifications add-on for Google Forms.]っていうのが出てしまうけど、これはしょうがないですね。だけどアドオンを入れてちょっと設定するだけで自動返信の設定をすることができるのは楽。

Googleフォームの自動返信をGAS(GoogleAppsScript)で行う

アドオン使うと簡単に自動返信することができるけど、文言の入力がしにくかったりアドオンのリンクがメールについてしまったりして何かと気になっちゃいますよね。そういった時にはGoogleAppsScriptを使ってメールの自動返信をしてやるといいです。

GoogleAppsScript(GAS)はJavaScriptのようにかけるプログラムでGoogleのサービスをプログラムを使っていじることができます。そこで今回はこのGASでメールを送信してやろうというわけです。ちなみにGASは使ってみると結構便利そうだけど、どんなことができるか分からんっていう場合は以下の記事なんかを参考にしてみるといいかもしれません。

GASで早速自動返信の設定をやっていきましょう。右上のボタンから設定へ進んで、メールアドレスを収集するにチェックを入れておきます。これはGASでメールアドレスを取得したいためにやっておきます。

そうすると勝手にメールアドレスの欄が追加されるのでその項目を使いましょう。

そしたら、[スクリプトエディタ]を選択してGASを記述する画面にいきます。

GASを記述する

スクリプトエディタをクリックしたら、GASの画面が開くからそこにメールを送信するコードを書いていく。あまり吟味せず結構雑に書いたから諸々気になる部分のコードは良い感じに変えて欲しい。

const getInputs = responses => {
  let inputs = []
  responses.forEach(res => {
    inputs.push({
      title: res.getItem().getTitle(),
      response: res.getResponse()
    })
  })
  
  return inputs
}

const createMessages = inputs => {
  inputs.forEach(input => {
    body = "以下の内容で承りました。\n\n"
      + "■" + input.title
      + "\n\n"
      + input.response
      + "\n\n"
      + "1週間以内にご連絡いたしますので、お待ちください。"
  })
 
  messages = {
    subject: "お問い合わせありがとうございます",
    body:   body
  }
  
  return messages
}

const sendMail = (messages, targetAddress) => {
  GmailApp.sendEmail(targetAddress, messages["subject"], messages["body"]);
}

const main = e => {
 const inputs = getInputs(e.response.getItemResponses())
 const messages = createMessages(inputs)
 sendMail(messages, e.response.getRespondentEmail())
}

トリガーを設定する

コードは書いたけどまだダメです。このコードはフォームが送信されたら実行して欲しいのでそのための設定をします。トリガーっていうやつですね。[編集]から[現在のプロジェクトのトリガー]と進みましょう。

そしたら右下の[トリガーを追加]っていうボタンをクリックします。

そしたらこんな感じでトリガーを追加する。

  • 実行する関数を選択・・・今回はmain関数に他の関数も呼ぶ処理を書いているからmainを指定
  • イベントの種類を選択・・・フォーム送信時

保存ボタンを押して設定するとフォームが送信された時に今作った関数が動いてフォームを送信した人へメールが送られるはず。ちなみに[このアプリは確認されていません]っていう表示が出てしまったら、許可してやれば進めます。

 

フォームを送信してメールが自動送信されるか確かめる

準備は終わったから、実際にフォームに何か入力してメールが飛んでくるか確認してみましょう。右上のプレビューから入力して確認できます。

 

適当にこんな感じで送信してみます。

送信するとこんな感じで、自動でメールが飛んできました。GoogleAppsScriptで送信したから今回は最初に紹介したアドオンみたいに下のほうにそのリンクなんかなくていいですね。

このメッセージの文言はGoogleAppsScriptで作っているから変えたかったら、そこのコードをいじるしかないです。今回はフォームの内容がメールアドレスとお問い合わせ内容だけだったけど、フォームの内容が増えたらメッセージの文言を作る部分を変えないとダメそうですね。

メールが届かなかったらエラーの可能性

フォームを送信してもメールが飛んでこなかったら、どこかコードが間違っている可能性が高いのでトリガーの画面からエラーが出ていないかみてみましょう。

エラーがで入れば、エラーが発生したコードの行数なんかが表示されるからその辺りを見てみるといいですね。

まとめ

Googleフォームで送信されたら自動返信するっていう設定をやってみたけど、どうだっただろうか。GoogleAppsScriptを使った方法とアドオンを使った方法を書いたけど、アドオンの方が遥かに楽ですね。ただ、GoogleAppsScriptの場合は自由度が高いから自分で色々設定したいっていう場合に使えますね。

コードのがある程度分かればGoogleAppsScriptでいけそうだから、まあいけるっしょっていう場合はゴリゴリの自動返信コードを書いてみてください。

Twitterでフォローしよう

おすすめの記事