Google フォームに入力してもらったアンケート結果をスプレッドシートで集計して、
その結果を指定の日時に自分に Gmail で通知する仕組みを考えましたので紹介します。
1、Google フォームへの入力とスプレッドシートでの集計
Google フォームへ入力した内容をスプレッドシートに取り込み集計する方法についてはこちら↓の記事内で詳しく書いておりますので参考にして下さい。
今回の記事では、この部分についてはざっと流れを説明します。
講義を行った後に受講者にアンケートを送り、入力してもらうものとします。
Google フォームでアンケートの項目を設定してフォームを作ります。
(とりあえずアンケート項目を下図の4つとしておきます。)
Google フォームに入力した内容をスプレッドシートに取り込むためには「回答」を選択して「+」を選択して取り込むシートを選択します。
スプレッドシートの中に随時(回答が入力されるたびに)取り込まれたアンケート結果は以下のように↓なります。
さて、取り込んだアンケートの結果を集計するシート「アンケート集計結果」をあらかじめ作っておき、各項目ごとに
・満足
・どちらでもない
・不満
それぞれの人数を集計できるようにしておきます。
集計の方法は Excel にもある COUNTIFS 関数を使います。
「アンケート集計結果」シートのセル「C4」には以下のように入力します。
=COUNTIFS(‘フォームの回答 1’!$B:$B,$B4)
上記関数では「フォームの回答」シート(アンケートの入力結果が自動的に取り込まれるシート)のB列の中で、「アンケート集計結果」シートのセル「B4」と一致する数を集計しています。
「アンケート集計結果」シート↓
「フォームの回答」シート↓
この数式を他のセルにもコピペしておきます。
これでアンケートの回答がありスプレッドシートにデータが取り込まれるたびに「アンケート集計結果」シートにデータが集計されていきます。
2、日時を指定して Gmail に通知を送る GAS コードとメールの日時指定の方法
さて、随時集計されていくアンケート結果を日時を指定して自分の Gmail で自分宛てに通知するようにしておきます。
アンケートの回答期限に送るようにしておけば良いでしょう。
期限が来たらスプレッドシートを直接見ればそれでもいいのですが、指定日時に通知するようにすれば確認も少し楽になると思われます。
全 GAS コード
まず、アンケートの結果を Gmail で通知する GAS コードを紹介します。
スプレッドシートの「ツール」の「スクリプトエディタ」を開き以下のコードを書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
function Gmail_Send() { var Sheet = SpreadsheetApp.getActiveSpreadsheet(); //宛先 Gmail アドレス var Sheet_Name = Sheet.getSheetByName("アンケート集計結果"); Sheet_Name.activate(); var Mail_To = "●●●"; //宛先 Gmail アドレス var Mail_From = "●●●"; //差出人 Gmail アドレス var Name_From = "松井元"; //差出人の名前 var Title = "アンケート集計結果"; //テーマへの満足度 var Value_C4 = Sheet_Name.getRange("C4").getValue(); var Value_C5 = Sheet_Name.getRange("C5").getValue(); var Value_C6 = Sheet_Name.getRange("C6").getValue(); //内容への満足度 var Value_C10 = Sheet_Name.getRange("C10").getValue(); var Value_C11 = Sheet_Name.getRange("C11").getValue(); var Value_C12 = Sheet_Name.getRange("C12").getValue(); //質疑応答への満足度 var Value_C16 = Sheet_Name.getRange("C16").getValue(); var Value_C17 = Sheet_Name.getRange("C17").getValue(); var Value_C18 = Sheet_Name.getRange("C18").getValue(); //時間配分への満足度 var Value_C22 = Sheet_Name.getRange("C22").getValue(); var Value_C23 = Sheet_Name.getRange("C23").getValue(); var Value_C24 = Sheet_Name.getRange("C24").getValue(); var Text="アンケート集計結果通知" + "\n" + "\n" + "●テーマへの満足度" + "\n" + " 満足:" + Value_C4 + "人" + "\n" + " どちらでもない:" + Value_C5 + "人" + "\n" + " 不満:" + Value_C6 + "人" + "\n" + "\n" + "●内容への満足度" + "\n" + " 満足:" + Value_C10 + "人" + "\n" + " どちらでもない:" + Value_C11 + "人" + "\n" + " 不満:" + Value_C12 + "人" + "\n" + "\n" + "●質疑応答への満足度" + "\n" + " 満足:" + Value_C16 + "人" + "\n" + " どちらでもない:" + Value_C17 + "人" + "\n" + " 不満:" + Value_C18 + "人" + "\n" + "\n" + "●時間配分への満足度" + "\n" + " 満足:" + Value_C22 + "人" + "\n" + " どちらでもない:" + Value_C23 + "人" + "\n" + " 不満:" + Value_C24 + "人" + "\n" + "\n"; /* メールを送信 */ GmailApp.sendEmail( Mail_To, Title, Text, { from: Mail_From, name: Name_From } ); } |
上記コードの「●●●」の部分に自分の Gmail アドレスを入れましょう!
これで自分の Gmail から自分宛てに通知が届くようになります。
また、Name_From = “松井元”
の名前を入れる部分も自分の名前に変更して下さいね!
なお、「スクリプトにはその操作を行う権限がありません。その操作を行うには・・・・」とエラーが出ることがあります。
その場合、まずスクリプトエディタで「表示」の「マニフェストファイルを表示」を選択します。
すると以下の記述が出てきます。
これに下記を張り付けましょう。
1 2 3 4 |
"oauthScopes": ["<a href="https://www.googleapis.com/auth/script.send_mail">https://www.googleapis.com/auth/script.send_mail</a>", "<a href="https://www.googleapis.com/auth/spreadsheets">https://www.googleapis.com/auth/spreadsheets</a>", "<a href="https://www.googleapis.com/auth/gmail.modify">https://www.googleapis.com/auth/gmail.modify</a>" ],</p> |
なお、このエラーの訂正方法についてはこちらのサイトを参考にさせて頂きました。
コード説明
コードの内容を説明します。
「アンケート集計結果」シートをアクティブにする
1 2 3 |
var Sheet = SpreadsheetApp.getActiveSpreadsheet(); //宛先 Gmail アドレス var Sheet_Name = Sheet.getSheetByName("アンケート集計結果"); Sheet_Name.activate(); |
上記の部分では、まず開いているアクティブなスプレッドシートそのものをオブジェクトとして変数「Sheet」に入れています。
そして、「アンケート集計結果」という名前のシートを変数「Sheet_Name」に入れて、そのシートをアクティブ(操作できるように)にしています。
メールの設定
1 2 3 4 |
var Mail_To = "●●●"; //宛先 Gmail アドレス var Mail_From = "●●●"; //差出人 Gmail アドレス var Name_From = "松井元"; //差出人の名前 var Title = "アンケート集計結果"; |
この部分ではメールの設定をしています。
変数「Mail_To」には宛先の Gmail アドレスが入り、変数「Mail_From」には差出人 Gmail アドレスが入ります。
今回は両方とも「●●●」で示す Gmail アドレスが入ります。
変数「Name_From」には自分の名前「松井元」が入ります。
*先にも書いたとおりここは自分の名前に変更して下さい!
変数「Title」には「アンケート集計結果」というこのメールのタイトルを入れます。
アンケート集計結果の読み込み
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//テーマへの満足度 var Value_C4 = Sheet_Name.getRange("C4").getValue(); var Value_C5 = Sheet_Name.getRange("C5").getValue(); var Value_C6 = Sheet_Name.getRange("C6").getValue(); //内容への満足度 var Value_C10 = Sheet_Name.getRange("C10").getValue(); var Value_C11 = Sheet_Name.getRange("C11").getValue(); var Value_C12 = Sheet_Name.getRange("C12").getValue(); //質疑応答への満足度 var Value_C16 = Sheet_Name.getRange("C16").getValue(); var Value_C17 = Sheet_Name.getRange("C17").getValue(); var Value_C18 = Sheet_Name.getRange("C18").getValue(); //時間配分への満足度 var Value_C22 = Sheet_Name.getRange("C22").getValue(); var Value_C23 = Sheet_Name.getRange("C23").getValue(); var Value_C24 = Sheet_Name.getRange("C24").getValue(); |
上記部分では、「アンケート集計結果」から変数に集計結果を読み込んでいます。
「テーマへの満足度」については「満足」「どちらでもない」「不満」それぞれの人数を変数 Value_C4、Value_C5、Value_C6 に入れています。
Value_C4 はセル「C4」から読み込み、Value_C5 はセル「C5」から読み込み、Value_C6 はセル「C6」から読み込んでいます↓。
Gmail 本文の設定
1 2 3 4 5 |
var Text="アンケート集計結果通知" + "\n" + "\n" + "●テーマへの満足度" + "\n" + " 満足:" + Value_C4 + "人" + "\n" + " どちらでもない:" + Value_C5 + "人" + "\n" + " 不満:" + Value_C6 + "人" + "\n" + "\n" + "●内容への満足度" + "\n" + " 満足:" + Value_C10 + "人" + "\n" + " どちらでもない:" + Value_C11 + "人" + "\n" + " 不満:" + Value_C12 + "人" + "\n" + "\n" + "●質疑応答への満足度" + "\n" + " 満足:" + Value_C16 + "人" + "\n" + " どちらでもない:" + Value_C17 + "人" + "\n" + " 不満:" + Value_C18 + "人" + "\n" + "\n" + "●時間配分への満足度" + "\n" + " 満足:" + Value_C22 + "人" + "\n" + " どちらでもない:" + Value_C23 + "人" + "\n" + " 不満:" + Value_C24 + "人" + "\n" + "\n"; |
上記の部分では、メールの本文の内容を変数「Text」に入れています。
文字や数字を繋げる場合は「+」を入力すればよく、改行する場合には「”\n”」と入力します。
また、この部分はコードが複数行になって長いですが、最後に「;」を入力するまでは一つの命令として認識されます。
メールでの通知がなるべく見やすくなるように改行を上手に使いましょう!
Gmail 送信設定
1 2 3 4 5 6 7 8 9 10 |
/* メールを送信 */ GmailApp.sendEmail( Mail_To, Title, Text, { from: Mail_From, name: Name_From } ); |
上記の部分では、Gmail で送信を行います。
各変数は通知で送られてきたメールの以下の部分に記載されて来ます。
トリガーの設定で日時を指定する
さて、メールを送付する GAS コードを作りましたが、これを日時を指定して実行したいと思います。
スクリプトエディタの「編集」で「現在のプロジェクトのトリガー」を選択します。
「新しいトリガーを追加」で今回作った関数「Gmail_Send」を選択して、日時を設定します。
日時の設定は「時間主導型」で「特定の日時」を指定すれば設定できます。
これで、指定した日時に「アンケート集計結果」が以下のように Gmail で通知されるようになりました。
3、まとめ
Google フォーム、スプレッドシートを使ったシステムで GAS(Google Apps Script)を使ってプログラミングすれば色々と便利な仕組みが作れますね!
これから何か作ったら実例としてアップして行きたいと思います。
編集後記
木曜(9/5)は、午前中に健康診断の再検診。健診の際にわずかに基準値を外れていた項目があったのですが、再検査では無事に基準値内におさまっていて良かったです!
昨日(9/6)は顧問先に決算結果を報告するために、終日西伊豆方面への出張でした。