Googleフォームの回答から、GASを使ってメールの下書きを作る
お世話になっております。分析屋の小野と申します。
私は勤怠メールをGmailで行っております。
PCではテンプレートを利用できますが、スマホでは利用できず、
電車遅延などで、スマホから勤怠メールを送るときに、前のメールからコピペしたり、本文を打ったりして、面倒だな~と感じていました。
そこで、Googleフォームからボタンをポチポチ押すだけでメールを作れるようなものを作りたいと思います。
Google Apps Script(GAS)では、以下のコードで簡単にGmailの下書きを作成できます。
GmailApp.createDraft()
1.完成形のイメージ
Googleフォームで、メールの内容(遅刻・早退など)を回答
回答内容を、Googleスプレッドシートに連携
Googleスプレッドシート内で、メールテンプレートを作成
メールテンプレートからGmail下書きを作成
2.ツールの作成
2-1.Googleフォーム作成
セクションを3つ作り、それぞれに「勤怠種類」「出社退社予定時間」「勤怠理由」の質問を設けます。
「勤怠種類」「勤怠理由」はラジオボタン、「出社退社予定時間」は時刻で作成します。
休暇の場合、出社・退社予定時刻はいらないので、
最初の質問の設定で、「遅刻」「早退」はセクション2に移動し、
「休暇」はセクション3に移動するように変更します。
これで質問項目は完成です。
次に回答内容をスプレッドシートに連携の設定をします。
回答タブの「スプレッドシートにリンク」から
新しいスプレッドシートを作成します。
2-2.連携されたGoogleスプレッドシート作成
先程作成したアンケートに回答すると、スプレッドシートに自動的に入力されます。
シートを追加し、メールのテンプレートを作成します。
シート名は「テンプレート」にします。
下記Excel画像のように、枠組みを作成し、
「件名」と「本文」は、あとでGASで作成するとして、
「宛先」「Cc」「Bcc」は入力しておきます。
スプレッドシートのタイムゾーンが東京じゃない場合、
東京に変更します。
2-3.GAS作成
スプレッドシートの拡張機能タブからApps Scriptを押します。
下記コードを入力します。
// 各シートを変数に代入
const FormSheetName = "フォームの回答 1";
const form_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(FormSheetName);
const TemplateSheetName = "テンプレート";
const template_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TemplateSheetName);
function getFormData(){
// Googleフォームデータを変数に格納
let data = form_sheet.getDataRange().getValues();
let latest_data = data[data.length -1]; //「フォームの回答 1」シートの入力最終行を代入
let kintai_type = latest_data[1]
let scheduled_time = Utilities.formatDate(latest_data[2], "JST", "HH:mm");
let reason = latest_data[3]
// その他変数格納
const name = "小野";
let today = Utilities.formatDate(new Date(), "JST", "yyyyMMdd");
let scheduleStr = "";
switch(kintai_type){
case "遅刻":
scheduleStr = "出社予定";
break;
case "早退":
scheduleStr = "退社予定";
break;
}
// 件名作成 → 「テンプレート」シートに入力
template_sheet.getRange(5, 3).setValue("勤怠 " + name + " " + today + " " + kintai_type);
// 本文作成 → 「テンプレート」シートに入力
template_sheet.getRange(6, 3).setValue(reason + " " + scheduled_time + scheduleStr);
}
function createDraftMail(){
// 「テンプレート」シートのデータを変数に格納
let data = template_sheet.getRange(2, 3, 5).getValues();
let to_mail = String(data[0]);
let cc_mail = String(data[1]);
let bcc_mail = String(data[2]);
let subject_mail = String(data[3]);
let body_mail = String(data[4]);
let options = {
cc: cc_mail,
bcc: bcc_mail
}
// gmailの下書き作成
GmailApp.createDraft(to_mail, subject_mail, body_mail, options)
}
function main(){
getFormData();
createDraftMail();
}
トリガーを設定します。
アンケートフォームを回答した時に、下書きを作成したいので、
「フォーム送信時」に設定をしたら、保存をします。
認証を求められるので、許可したら完成です!
3.最後に
回答フォームのURLをブックマークに保存しておいて、
スマホから簡単に勤怠メールを作成できるようになりました。
Googleフォームから連携するGoogleスプレッドシートを作成
→Googleスプレッドシートの中でGASを入力
→GASのトリガーをフォーム送信時にする
で比較的簡単に連携できる。時刻について、Googleスプレッドシートのタイムゾーンが東京になっておらず、10:00→10:37にずれてしまうところで、少し手こずりました。
テンプレートを増やしたり、送信先アドレスをまとめておいたり、いろいろやれることはありそう。
今回のツールで少しだけ楽になりましたが、あわよくばスマホでもテンプレートが使えたり、テンプレートでメールアドレスも挿入されたらうれしいなと常々思っています。Googleさんお願いします。
参考にさせていただいたサイト
それ、GASっちゃえば? -定型メールはGoogleForm操作で送信https://sqripts.com/2024/01/09/86093/
スプレッドシートからメール下書き作成(その3)[GAS]Cc/Bcc追加
https://note.com/kawamura_/n/nc399f4b1de3fGoogleフォームの回答をスプレッドシートに書き込むGASスクリプト
https://www.wantedly.com/companies/company_7005547/post_articles/870616GASでのDate型データのフォーマット
https://jp.tdsynnex.com/blog/google/gas-data-format/【GAS (Google Apps Script) 】コードの書き方・テクニック編|Offers Tech Blog
https://zenn.dev/overflow_offers/articles/20220616-google-app-script-technique
ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!
株式会社分析屋について
弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。
ホームページはこちら。
noteでの会社紹介記事はこちら。
【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。