非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Google Apps Scriptで祝日を取得する方法(Googleカレンダーとの連携)

   

Google Apps Script(GAS)では、日付から曜日を特定するだけではなく日本の祝日も特定できます。

通常のプログラミング言語では曜日を示す番号を取得するだけしかできず、祝日を特定したい場合は別途独自でデータを与える必要がありますが、GASの場合はGoogleカレンダーと連携して祝日取得が可能なのです。

[ad#top-1]

まずは土日を特定する方法

まず最初に土日を特定する方法についてです。

DateオブジェクトのgetDay()メソッドを使うと曜日を示す番号を取得できます。土曜日は6で日曜日は0になるのでそれを検知すれば土日を検知できます。ここまでは至って普通の機能です。

var dt = new Date();
//土曜日は6, 日曜日は0
if(dt.getDay() == 0 || dt.getDay() == 6){
  //ここで処理
}
 

 

日本の祝日を特定する方法

次に日本の祝日を特定する方法です。

例えば、9/23は春分の日ですが月曜日のためgetDay()メソッドでは検知できません。

そこでGoogleカレンダーと連携させます。CalendarAppというAPIを使うことで可能になります。

以下のソースコードで祝日かどうかを確認できます。変数eventsに「CalendarEvent」という文字列が入っていれば祝日です。空白なら祝日ではありません。これをキーに判断できます。

var gcalendar = CalendarApp.getCalendarById("ja.japanese#holiday@group.v.calendar.google.com");
var events = gcalendar.getEventsForDay(new Date('2018/9/23'));
//events=(空白): 祝日ではない
//events='CalendarEvent': 祝日
 

 

平日ならtrueを返す関数

以上を踏まえて平日ならtrue, 休日ならfalseを返す関数を作りました。

function isWeekday(){
  var dt = new Date();
  //土日だったらfalse
  if(dt.getDay() == 0 || dt.getDay() == 6){
    return false;
  }

  //祝日だったらfalse
  var gcalendar = CalendarApp.getCalendarById("ja.japanese#holiday@group.v.calendar.google.com");
  var events = gcalendar.getEventsForDay(dt);
  if(events.length > 0){
    return false;
  }

  return true;
}
 

 

[ad#ad-1]

スポンサーリンク

 - Google Apps Script, Google Dirve