LANG SELRCT

コードを書く場所についてはこちら

2018年2月15日木曜日

Googleカレンダーで日本の祝日を取得する


今年の日本の祝日をログに出すコードの例です
祝日のデータはGoogleカレンダーの「日本の祝日」から取得しています


事前準備
Googleカレンダーで日本の祝日を表示しておく


事前準備後に以下のコード.gsのget_public_holidays()を実行すると
その年の日本の祝日がログに出ます

※どこまで取得できるか試してみると前後1年分の祝日も取得できるようです


日本の祝日のカレンダーID
  • ja.japanese#holiday@group.v.calendar.google.com
  • get_calender_id(name) で取得しています




コード.gs
function get_public_holidays() {
  var name = "日本の祝日";
  var start = get_start_end()[0];
  var end = get_start_end()[1];
  var id = get_calender_id(name);
  var public_holidays = get_schedules(id, start, end);
  Logger.log(public_holidays);
}

function get_start_end() {
  var year = new Date().getYear();
  var start = year + "/01/01";
  var end = year + "/12/31";
  var start_end = [start, end];
  return start_end;
}

function get_calender_id(name) {
  var calender = CalendarApp.getCalendarsByName(name);
  var id = calender[0].getId();
  return id;
}

function get_schedules(id, start, end) {
  var calender = CalendarApp.getCalendarById(id);
  var start_date = new Date(start);
  var end_date = new Date(end);
  var schedules = calender.getEvents(start_date, end_date);
  var array = [];
  for (var i = 0; i < schedules.length; i++) {
    var date = schedules[i].getAllDayStartDate();
    date = get_date(date);
    var title = schedules[i].getTitle();
    array.push([date, title]);
  }
  return array;
}

function get_date(date) {
  var result = Utilities.formatDate(new Date(date), 'Asia/Tokyo', 'yyyy/MM/dd');
  return result;
}
意訳
この機能がやること
カレンダーの名前
いつから
いつまで
カレンダーの名前からIDを取得して
指定した期間内の予定を取得して
ログに出す


この機能がやること
現在の日時を取得してその西暦を取得して
その年の01/01
その年の12/31
を配列に入れて
返す


この機能がやること
渡されたカレンダー名からカレンダーを取得して
そのIDを取得して
返す


この機能がやること
渡されたidからカレンダーを取得して
渡されたstartの日付をnew Dateに渡して
渡されたendの日付をnew Dateに渡して
カレンダーの予定を取得して
予定の数だけ以下を繰り返す
結果を入れる配列を用意して
一つずつ日付を取得して
'yyyy/MM/dd'の形にフォーマットして
タイトルを取得して
arrayに追加する

すべて追加したarrayを返す


この機能がやること
渡されたdateを'yyyy/MM/dd'の形にして
返す




実行結果