以前の職場ではGmailで日報を書く必要がありました。
毎回「前日の日報をコピペ」→「前日の内容を削除」→「今日の内容を書く」という流れでやっていました。
当時はGASの存在を知らず、上記のような手間をかけていました。
GASの存在を知った今なら、ある程度自動化していただろうな…と。
今回はその辺りに関して書いていきます。
GASでGmailの下書き(日報の下書き)を定期作成する対応をしてみます。
それでは本題へ。
GASとは?
まずは「GASとは?」について書いておきます。
Google Apps Script(GAS)は、ひとことで言えばGoogleが提供する各種サービスの自動化/連携を行うためのローコード開発(※1)ツールです。GASを使うと、Gmailやカレンダー、Googleスプレッドシート、Googleドライブなど、Googleが提供する様々なサービス上で処理を自動化したり、複数のサービスを連携させたりできます。
※1:ローコード開発:可能な限りソースコードを書かずにアプリケーションを開発する手法出典:【入門】GASとは?できること&活用法を解説(サンプルコード付き) - マーケティングオートメーションツール SATORI
やりたいこと
記事の冒頭でも触れた通り、日報の下書きを定期作成します。
完成図は上記のような感じです。
プログラム
プログラムは以下の通りです。
// メールアドレス const MAIL_ADDRESS = PropertiesService.getScriptProperties().getProperty('MAIL_ADDRESS'); /** * メイン処理 */ function main() { // 宛先 const to = MAIL_ADDRESS; // 件名 const subject = `日報(${getCurrentDate()})`; // 本文 const body = createMailBody(); // 下書きを作成 GmailApp.createDraft(to, subject, body); } /** * メール本文を作成する */ function createMailBody() { const retBody = []; retBody.push('■今日の業務内容'); retBody.push('■所感'); retBody.push('■今後'); return retBody.join('\n\n'); } /** * 日付をフォーマットする */ function getCurrentDate() { const now = new Date(); const year = now.getFullYear(); const month = zeroPadding(now.getMonth()+1); const date = zeroPadding(now.getDate()); return year + '/' + month + '/' + date; } /** * ゼロ埋めする */ function zeroPadding(str) { return ('0' + str).slice(-2); }
“MAIL_ADDRESS”はスクリプト プロパティを使用しています。
スクリプト プロパティの詳細は以下記事にて。
miya-moto-memo.hatenablog.com
「GmailApp」の詳細
Gmailに関するリファレンスをリンクしておきます。
GmailApp
developers.google.com
GmailApp.createDraft
「GmailApp.createDraft」で、Gmailの下書きを作成出来ます。
パラメータはGmailを送信する「GmailApp.sendEmail」と同じようです。
developers.google.com
トリガー設定
プログラムの実行が成功したら、トリガー設定もしておきます。
GASプログラムを1日1回、定期実行するように設定します。
※以下の画像だと「毎日午後5時~午後6時に実行」となります(定時近辺の時間)
追加対応
1日1回の定時実行だと、休日も下書き(日報)が作成されてしまいます。
それを回避する追加対応をしてみました。
こちらも良ければぜひ。
月~金だけ実行するように対応
月~金曜日だけ下書き(日報)を作成するように対応してみました。
※祝日には対応できていません。
miya-moto-memo.hatenablog.com
祝日にも対応
祝日に下書き(日報)が作成されないように対応してみました。
祝日の取得/判定処理を追加しています。
miya-moto-memo.hatenablog.com
個人的な休暇にも対応
計画年休・お盆休み・正月休み等、個人的な休暇の日に下書き(日報)が作成されないように対応してみました。
Googleカレンダーに登録した予定から、休暇を取得/判定する処理を追加しています。
miya-moto-memo.hatenablog.com
おわりに
ということで、「GASでGmailの下書きを定期作成(1日1回:日報作成)」に関してアレコレ書いてみました。
トリガーで”1日1回”定期実行するように設定しましたが、これだと休日も実行されてしまいます。
出来れば平日のみの実行にしたいところです。
色々調べてみたところ、トリガーで”平日のみ実行”を設定するのは難しそうでした。
プログラム側でうまく平日を判定する必要がありそうです。
これは別記事にて書いてみようかなと思います。
とはいえ、休日の実行で作成された下書きは削除してしまえばOKです。
とりあえず今回の内容でも運用できそうではあります。
この記事が参考になれば幸いです。
(追記)
曜日判定や祝日判定など、色々と追加対応しています。
「追加対応」のところにまとめています。
そちらも良ければぜひ。
関連記事
GAS(Google Apps Script)に関してはいくつか記事にしています。
気になる記事があればぜひ。
GASの活用事例
GASでGmailの下書きを定期作成(1日1回:日報作成)- 派生記事