💭
GoogleFormの回答をメールで通知
追記
nippologというサービスがあり、これだとGoogleAppsScriptでのコーディング不要でできた。
GASを書くよりたぶんこっちの方が楽。
下記の記事でまとめ直している。
※Slackでの通知の前提で書いているものの、通知先の作成でメールアドレスをいれれば、メールで通知を受け取れる。
GoogleFormを作成
GoogleFormをつくる。
回答が記入されるスプレッドシートのシート名を変えておく。
GoogleAppsScriptでコードを記載
GoogleFormの回答が記載されるスプレッドシートのシートを開き、
「拡張機能」>「Apps Script」
下記のようにコードを記載。
処理の概要としては、
①特定のスプレッドシートのシートを取得。
②そのシートの一番下の行を取得し、取得したい回答が入ったセルの中身を取得。
③その項目を使って、文面を作成。
④指定したメアドに対して、作成した文面を送る。
という内容。
function report() {
/*
スプレッドシートIDでスプレッドシートを取得
スプレッドシートIDは、スプレッドシートのURL内の下記の~~~~~~~の部分
https://docs.google.com/spreadsheets/d/~~~~~~~~~~~~~~~/edit
*/
let ss = SpreadsheetApp.openById("XXXXXXXXXXXXXXXXXXXXXXXXX");
//回答の記録されるシート名(デフォルトは、「フォームの回答 1」のようになっているが、事前に変えておいた方がよい。)
let sh = ss.getSheetByName("report");
//一番下の行(最新の回答)を取得
let last_row = sh.getLastRow();
//スプレッドシートから最新の行を取得
//最終行の左からX番目のセルの値を取得、という意味
let name = sh.getRange(last_row,2).getValue();//担当者
let weather = sh.getRange(last_row,3).getValue();//天気
let content = sh.getRange(last_row,4).getValue();//報告
//送信する文章を作成
let message =
"【業務報告】"+"\n"
+"担当:"+name+"\n"
+"天気:"+weather+"\n"
+"報告:"+content+"\n"
+"-------------\n";
const mail = "-----@gmail.com";//送信先のアドレス
const subject = "業務報告";//タイトル
GmailApp.sendEmail(mail, subject, message);
}
試しに送信する
reportという関数を選んで、「実行」を押す。
アクセス許可を求められるので、許可する。
指定したシートの一番下の行をみて、設定したメールアドレスにメールが送信される。
トリガーを設定
上記までだと、フォームが回答されたときに、処理が行われない。
フォーム回答時に、上記のreport関数を動かすために、トリガーを設定する。
「トリガーを追加」を押して、下記のように設定。
先ほどと同様に、アクセス許可を求められるので、許可する。
今回は、フォームが回答されたときに、即report関数が動くようにしているが、
毎日10時~11時の間に実行、のようにタイマーにすることも可能。
※ピンポイントで10時00分に設定することはできない。
これで完了!
Discussion