みやもとメモ

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

目次
目次

GASを平日だけ実行する(Googleカレンダーの「日本の祝日」取り込み版)

この記事をシェアする

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

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

miya-moto-memo.hatenablog.com

上記の記事で、GASで祝日を取得/判定する内容を詳しく書きました。
この祝日の内容を以下の記事に取り込みます。

miya-moto-memo.hatenablog.com

それでは本題へ。

やりたいこと

記事の冒頭でも触れた通り、以下記事に祝日の判定機能を取り込みます。

miya-moto-memo.hatenablog.commiya-moto-memo.hatenablog.com

今回の対応により、祝日にGmailの下書き(日報)が作成されなくなります。

プログラム

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

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

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

/**
 * 休日判定 ★変更
 * ・土日の場合:true
 * ・祝日の場合:true
 * ・上記以外 :false
 */
function isHoliday() {
  const date = new Date();
  // 土日の判定
  const weekday = date.getDay();
  if (weekday === 0 || weekday === 6) {
    return true;
  }
  // 祝日の判定
  const holidayCalendar = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
  const events = holidayCalendar.getEventsForDay(date);
  if (events.length > 0) {
    return true;
  }
  return false;
}

/**
 * 下書きを作成
 */
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);
}

前回の記事との差分を分かりやすくするため、プログラムコメントに「★変更」と書いています。
変更したのは「isHoliday」の中身です。

変更前は「土日の判定」のみでした。
今回「祝日の判定」を追加しました。

プログラム実行

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

実行した日が休日の場合は、下書きが作成されずに処理が終了します。
そして祝日の場合も、下書きが作成されずに処理が終了します。

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

プログラムのポイント

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

CalendarApp.getCalendarById

「CalendarApp.getCalendarById」で、指定したIDのカレンダーを取得できます。
今回は「日本の祝日」のカレンダーIDを指定しています。

developers.google.com

Calendar.getEventsForDay

「Calendar.getEventsForDay」で、指定した日のイベントを取得できます。
今回は「日本の祝日」のカレンダー情報を取得しているため、指定した日付が祝日かどうか判定できます。

developers.google.com

※以下記事で詳しく書いています

miya-moto-memo.hatenablog.com

おわりに

ということで、「GASを平日だけ実行する(Googleカレンダーの「日本の祝日」取り込み版)」に関してアレコレ書いてみました。

今回の対応で、祝日も下書き(日報)が作成されなくなりました。
更に理想を追い求めるとしたら、計画年休や長期休暇(お盆休み、正月休み等)に対応する感じでしょうか。

そもそもは「Gmailに下書き(日報)を作成する」だけの機能です。
そこまでこだわる必要はないかもしれませんが、GASからGoogleカレンダーを操作する実装は色々と試してみたいなと。

色々調べながらやってみようかなと思います。

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

関連記事

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

GASの活用事例


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

TOPへ戻る HOMEへ