今働いている現場では、仕事終わりに簡単な日報をメールで送らないといけないのですよ。
日報を送る時の作業工程をザックリ分解するとこんな感じ…
- メモ帳で管理している日報の雛形を開く
- 雛形の件名部分の日付を更新
- 雛形の本文の作業内容を更新
- メーラーを開く
- 件名をメーラーにコピペ
- 本文をメーラーにコピペ
- 宛先を入力
- 送信ボタンを押す
正直、そんなに時間がかかるものではないのですが、いちいちメーラーを立ち上げてコピペするのが面倒くさいです。
規則性がないのは作業内容の更新だけなので、それ以外はスクリプトで自動化することにしました
メールを送信する処理を作る
MailApp.sendEmail()
を使用すれば簡単に実装できます
function sendMail(){
var to = '宛先のメールアドレス';
var subject = '件名';
var body = '本文';
MailApp.sendEmail(to, subject,body);
}
今日の日付を取得して件名に入れる
件名は更新する部分が日付だけなので、日付の部分を変数にしてスクリプトに埋め込みます。
var date = new Date();
var today = Utilities.formatDate( date, 'Asia/Tokyo', 'MM/dd');
var subject = '【プロジェクト名】'+today+'_氏名'
スプシに記述した雛形をGASで読み込む
Evernoteで管理していた雛形をスプシに移行して、本文の部分(セルのA1)をGASで読み込みます。
function getBody() {
var sheet =SpreadsheetApp.getActiveSheet();
var value = sheet.getRange('A1').getValue();
return value
}
本文の部分に取得したデータを入れます。
var body = getBody();
スプレッドシートに独自メニューを追加する
スプレッドシートから直接スクリプトを実行したいので、メニューを追加します。
function onOpen() {
var ss = SpreadsheetApp.getActive();
var items = [{name: '送信する', functionName: 'sendMail'}];
ss.addMenu('日報', items);
}
完成
function onOpen() {
var ss = SpreadsheetApp.getActive();
var items = [{name: '送信する', functionName: 'sendMail'}];
ss.addMenu('日報', items);
}
function sendMail() {
var date = new Date();
var today = Utilities.formatDate( date, 'Asia/Tokyo', 'MM/dd');
var to = '宛先のメールアドレス,宛先のメールアドレス';
var subject = '【プロジェクト名】'+today+'_氏名'
var body = getBody();
MailApp.sendEmail(to, subject,body);
}
function getBody() {
var sheet =SpreadsheetApp.getActiveSheet();
var value = sheet.getRange('A1').getValue();
return value
}
メーラーを立ち上げてコピペする手間がなくなり、スプレッドシートだけで完結するので、だいぶ楽になりました。
これなら面倒くさがりの僕でも頑張れそうです。