みやもとメモ

「Notion」「Google Apps Script」「ブログカスタマイズ」などについて書いていきます。

目次
目次

GASでGmailの下書きを定期作成(1日1回:日報作成)

この記事をシェアする

以前の職場ではGmailで日報を書く必要がありました。

毎回「前日の日報をコピペ」→「前日の内容を削除」→「今日の内容を書く」という流れでやっていました。
当時はGASの存在を知らず、上記のような手間をかけていました。
GASの存在を知った今なら、ある程度自動化していただろうな…と。

今回はその辺りに関して書いていきます。
GASでGmailの下書き(日報の下書き)を定期作成する対応をしてみます。

それでは本題へ。

GASとは?

まずは「GASとは?」について書いておきます。

Google Apps Script(GAS)は、ひとことで言えばGoogleが提供する各種サービスの自動化/連携を行うためのローコード開発(※1)ツールです。GASを使うと、Gmailやカレンダー、GoogleスプレッドシートGoogleドライブなど、Googleが提供する様々なサービス上で処理を自動化したり、複数のサービスを連携させたりできます。
※1:ローコード開発:可能な限りソースコードを書かずにアプリケーションを開発する手法

出典:【入門】GASとは?できること&活用法を解説(サンプルコード付き) - マーケティングオートメーションツール SATORI

satori.marketingwww.cocoe.co.jp

やりたいこと

記事の冒頭でも触れた通り、日報の下書きを定期作成します。

日報の下書きを定期作成したい
メール本文の枠も作成しておきたい

完成図は上記のような感じです。

プログラム

プログラムは以下の通りです。

// メールアドレス
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

プログラム実行

上記のプログラムを実行すると、Gmailに下書きが作成されます。
※2024年6月13日にプログラムを実行しました。

プログラム実行
下書きが作成される
メール本文の枠も作成される

モザイクになっているところにはメールアドレスが設定されています。

「GmailApp」の詳細

Gmailに関するリファレンスをリンクしておきます。

GmailApp
developers.google.com


GmailApp.createDraft
「GmailApp.createDraft」で、Gmailの下書きを作成出来ます。
パラメータはGmailを送信する「GmailApp.sendEmail」と同じようです。
developers.google.com

トリガー設定

プログラムの実行が成功したら、トリガー設定もしておきます。
GASプログラムを1日1回、定期実行するように設定します。


STEP
「トリガー」をクリック
STEP
「トリガーを追加」をクリック
STEP
トリガーを設定して、「保存」をクリック
※以下の画像だと「毎日午後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回:日報作成)- 派生記事

TOPへ戻る HOMEへ