みやもとメモ

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

目次
目次

GASを平日だけ実行する(トリガーとプログラム判定)

この記事をシェアする

今回はGAS(Google Apps Script)に関して書いていきます。

以前もGASに関する記事を書いています(以下リンク)。

miya-moto-memo.hatenablog.com

上記の記事で、GASでGmailの下書きを1日1回作成する対応をしました。
日報の下書きを作成するイメージで、平日だけ作成するのが理想でしたが、トリガーでは「平日のみ」の設定は出来ないようでした。

ということで、トリガーの設定とプログラムの実装を組み合わせて「平日のみ」の実行に対応してみました。
今回の記事ではその辺りに関して書いてみます。

それでは本題へ。

やりたいこと

記事の冒頭でも触れましたが、以下記事への追加対応となります。

miya-moto-memo.hatenablog.com

上記のGmail下書き作成機能は、トリガー設定により1日1回実行されます。
平日だけ実行されるのが理想なのですが、休日も実行されてしまいます。

トリガーで「平日のみ」実行は設定できないため、プログラムと組み合わせて「平日のみ」実行に対応します。

プログラム

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

// メールアドレス
const MAIL_ADDRESS = PropertiesService.getScriptProperties().getProperty('MAIL_ADDRESS');

/**
 * メイン処理
 */
function main() {
  // 休日の場合は処理しない ★追加
  if (isHoliday()) return;
  // 下書きを作成
  createDraft();
}

/**
 * ★追加
 * 休日判定
 */
function isHoliday() {
  const date = new Date();
  const weekday = date.getDay();
  return (weekday === 0 || weekday === 6);
}

/**
 * 下書きを作成
 */
function createDraft() {
  // 宛先
  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);
}

前回の記事との差分を分かりやすくするため、プログラムコメントに「★追加」と書いています。

プログラム実行

上記のプログラムを実行すると、Gmailに下書きが作成されます。
ただし、作成されるのは「平日のみ」です。
実行した日が休日の場合は、下書きが作成されずに処理が終了します。

プログラム実行
下書きが作成される(休日はスキップ)

プログラムのポイント

プログラムの中からポイントとなる部分をピックアップして説明していきます。

トリガー設定

トリガーでは「1日1回」実行されるように設定されています。
これは前回の記事で設定したままです。

関連記事

プログラム判定

プログラム側で実行した日の曜日を判定して、休日かどうか判定しています。
「土曜日」と「日曜日」を休日として判定しています。

「getDay」で曜日が取得できます。
土曜日が”6”、日曜日が”0”です。

developer.mozilla.org

これにより、GASを1日1回実行しつつ、休日の場合はGmailに下書きを作成せずに処理が終了するようになります。
結果として、平日だけGmailに下書きが作成されます。

おわりに

ということで、「GASを平日だけ実行する(トリガーとプログラム判定)」に関してアレコレ書いてみました。

今回の対応で、平日だけ実行するように出来ました。
ただ、祝日には対応できていません。

前回の記事でも触れていますが、実行してもGmailに下書きが作成されるだけです。
不要な下書きは削除してしまえばOKなので、そこまで不便ではないかなと。

ですが更に理想を追い求めるなら、祝日対応もしたいところです。
これは後ほど調べてみて実現できそうであれば、また実装して記事にしてみようかなと思います。

この記事が参考になれば幸いです。

(追記)
祝日対応してみました。
こちらも良ければぜひ。
miya-moto-memo.hatenablog.commiya-moto-memo.hatenablog.com

関連記事

GAS(Google Apps Script)に関してはいくつか記事にしています。
気になる記事があればぜひ。

GASの活用事例


GASでGmailの下書きを定期作成(1日1回:日報作成)- 派生記事

TOPへ戻る HOMEへ