#40 GoogleFormの回答が条件に当てはまる場合にメールで通知を送りたい
はじめに
GoogleFormからの回答をリアルタイムで確認するため、回答の内容をメールで送信する機能を作成してみました。
GoogleFormで「新しい回答についてのメール通知を受け取る」設定を行うことができますが、今回は条件付きでメールを送信するためGASを用いて処理を行います。
手順
1.GoogleFormを作成する
目的に合わせGoogleFormを作成してください。
※GoogleFormから「新しい回答についてのメール通知を受け取る」設定を行う方法はこちらをご確認ください。
(条件を設けずにメール通知を受け取りたい場合は上記リンクの方法で設定できます。)
今回使用するフォームとメールを送信する条件
今回はテンプレートの「イベント出欠確認」フォームを使用します。
設定されている質問は以下の4つです。
①参加されますか?(ラジオボタン)
⇒はい、参加します
⇒いいえ、参加できません
②参加者の名前をご記入ください。(テキスト)
③このイベントのことを、どのようにしてお知りになりましたか。(ラジオボタン)
⇒ウェブサイト
⇒友人
⇒ニュースレター
⇒広告
④コメントまたはご質問(テキスト)
今回は①で「はい、参加します」を選択し回答した場合のみ、メールを送信するようにします。
2.Google Apps Script を開く
作成したフォーム画面最上部にある「その他」を開き「スクリプト エディタ」を押下します。
Google Apps Scriptの画面に遷移します。
3.「appsscript.json」の修正を行う
画面左のメニューから「プロジェクトの設定」を押下します。
プロジェクトの設定>全般設定の中に
"「appsscript.json」マニフェスト ファイルをエディタで表示する"
というチェックボックスがあるのでチェックします。
左のメニューから「エディタ」画面へ戻ると、「ファイル」に「appsscript.json」が表示されるようになります。
メールの送信に必要なアクセス権限をリクエストするため、「oauthScopes」を追記します。
"oauthScopes": [
"https://www.googleapis.com/auth/script.send_mail"
]
アクセス権限が足りていない場合、スクリプト実行時に以下のようにエラーが発生します。
Exception: You do not have permission to call DocumentApp.create. Required permissions: https://www.googleapis.com/auth/script.send_mail
設定を追記しただけでは権限は付与されず、後述のトリガーの設定時に権限の付与を許可する必要があります。
参考:https://developers.google.com/apps-script/concepts/scopes?hl=ja
参考:https://zenn.dev/atomic/articles/831195249869ff
4.「コード.gs」ファイル修正
エディタに以下のコードを入力してください。
function onFormSubmit(e) {
// フォームの回答を取得する
var formResponses = e.response.getItemResponses();
// ①参加されますか?の回答
// 1番目の質問なので配列の[0]に値が入る
let participation = formResponses[0].getResponse();
// 条件を満たすかチェック
if (participation == 'はい、参加します') {
// 条件が満たされた場合、メールを送信する
sendEmail(formResponses);
}else{
// 条件が満たされない場合、ログを出力する
Logger.log('回答がメール通知の条件を満たしていません。', e.response.getItemResponses());
}
}
function sendEmail(formResponses) {
// 送信先のメールアドレス
var emailAddress = 'メールアドレス';
// メールの件名
var subject = 'GoogleFormへの回答がありました';
// メールの本文
var message = '回答内容\n' + formResponses.join('\n');
// メールを送信する
MailApp.sendEmail(emailAddress, subject, message);
}
コードを入力したら保存してください。
「Ctrl+S」かエディタ上部の「プロジェクトを保存」ボタン押下で保存できます。
5.トリガーの設定
フォームが送信されたとき、スクリプトが実行されるようにトリガーを設定します。
画面左のメニューから「トリガー」を押下しトリガー画面を開きます。
トリガー画面右下の「+ トリガーを追加」ボタンを押下し、以下のように設定してください。
実行する関数:onFormSubmit
実行するデプロイ:Head
イベントのソース:フォームから
イベントの種類:フォーム送信時
エラー通知設定:お好みで
保存を押下すると、アクセス権限を求めるポップアップが表示されます。
先に進み「Allow」押下でメール送信のアクセス権限が付与されます。
これでトリガーの設定は完了です。
6.実際にフォームを送信してみる
作成したフォームで回答を送信してみます。
スクリプトが動いているかどうかは、画面左のメニューの「実行数」から確認できます。
ステータスが「完了」と表示されていたらスクリプトの実行は成功です。
フォームの回答が条件に合わない場合、「実行数」画面のログに「回答がメール通知の条件を満たしていません。」と表示されます。
フォームの回答が通知の条件に当てはまる場合、指定したメールアドレスにメールが送信されます。
最後に
GoogleFormの回答を条件にメールを送る方法を紹介しました。
今回は参加か不参加かのシンプルな条件でメールを送信しましたが、条件を増やすことでより便利に使うことができそうです。
ご覧いただきありがとうございました。
Discussion