1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#40 GoogleFormの回答が条件に当てはまる場合にメールで通知を送りたい

Posted at

はじめに

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の回答を条件にメールを送る方法を紹介しました。
今回は参加か不参加かのシンプルな条件でメールを送信しましたが、条件を増やすことでより便利に使うことができそうです。
ご覧いただきありがとうございました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?