祝日判定や曜日取得などGoogle Apps Scriptで日付を使ったコードスニペット7選

Google Apps Script(GAS)を利用する時によく使う処理が、「○○曜日だったら〜する」といったような「日付に紐付いた処理」でしょう。
「曜日ごとに違う文字を出す」とか「祝日は実行させない」とかです。

私自身も日付関連の処理を多用するので、今回は、GASで色々作った時に使用した日付に関するコードスニペットを紹介したいと思います。

はじめに

各コードでドライブやメールなどのアプリを利用する場合があります。
それぞれ利用する際には、スクリプトの初回実行時に承認が必要です。

また、Google App Scriptの公式リファレンスも参考にしてください。

日付を使ったコード一覧

関数実行日を取得

タイマーを使って実行するときなどに、関数を実行した時間を記録したいときがあるかと思います。
GASはJavaScriptベースなので、JavascriptのDate型が使えます。
したがって、関数内でnew Date()を使用することで関数実行時の時間を取得することができます。

ある期間中であるかどうかを判定

例: 就業時間(8:00-17:00)を判定する

var work = {
  startTime: new Date().setHours(8),
  endTime: new Date().setHours(17)
};

// 比較したい時間帯(ここでは現在の時間)
var nowTime = new Date();

if(work.startTime <= nowTime && work.endTime <= nowTime) {
  // 就業時間の時の処理
}

ある期間のカレンダーを取得

例: 就業時間中8:00 – 17:00のカレンダーを取得したい場合

var work = {start: new Date(), end: new Date()};
work.start.setHours(8);
work.end.setHours(18);

var calendar = CalendarApp.getCalendarById('カレンダーのID');
var events = calendar.getEvents(work.start, work.end);

祝日かどうかを判定

Googleが提供している日本の祝日カレンダー(ja.japanese#holiday@group.v.calendar.google.com)を読み込むことで、祝日の情報を取得することができます。


function isJapaneseHoliday() {
  var startDate = new Date();
  startDate.setHours(0, 0, 0, 0);  
  var endDate = date;
  endDate.setHours(23, 59, 59, 999);

  var cal = CalendarApp.getCalendarById("ja.japanese#holiday@group.v.calendar.google.com");
  var holidays = cal.getEvents(startDate, endDate);

  return holidays.length != 0;
}

曜日を取得

date.getData()で曜日が取得できます。(これはJavaScriptの標準関数です。)

/*
0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
*/
var youbiArr = ['日', '月', '火', '水', '木', '金', '土'];
var youbi = youbiArr[new Date().getDay()];

Logger.log(youbi);

土日かどうかを判定


// date: Dateオブジェクト
function isHoliday(date) {
  return date.getDay() == 0 || date.getDay() == 6;
}

日付のフォーマットを変更

Google Apps Scriptでは日付のフォーマット変換用の関数が用意されています。
素のJavaScriptでは結構面倒なのでこれは便利です。

formatDate(date, timeZone, format)

// 「2016/09/12 19:00」のようなフォーマットに変換したStringを返す
Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm:ss');

おわりに

今回は日付に関連するコードスニペットに近いものを集めてみました。

GASの便利なところの一つに特定の期間での関数実行をコードを書かずに設定できることがあるかと思います。その際にこの記事で紹介したような実行日の日付で色々処理をするコードは非常に相性がよさそうです。

GAS便利。

  • BLOG
  • >
  • web
  • >
  • 祝日判定や曜日取得などGoogle Apps Scriptで日付を使ったコードスニペット7選