LANG SELRCT

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

2018年2月15日木曜日

Googleカレンダーで日本の祝日を取得してJSONで保存する


Googleカレンダーで日本の祝日を取得する
で取得した祝日の配列から

2次元配列からオブジェクトを作る
でオブジェクトを作って

JSONデータを作ってGoogleドライブに保存する
でJSONファイルを保存する

ということを実現するコードの例です



コード.gs
function create_public_holidays_json() {
  var FOLDER_ID = "ID";
  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);
  var obj = create_obj(public_holidays);
  var json = JSON.stringify(obj);
  var file_url = create_file(json ,FOLDER_ID);
  Logger.log(file_url);
}

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;
}

function create_obj(array){
  var obj = {};
  for (var i = 0; i < array.length; i++) {
    obj[array[i][0]] = array[i][1];
  }
  return obj;
}

function create_file(jobj, FOLDER_ID) {
  var content_type = "application/json";
  var file_name = "public_holidays";
  var blob = Utilities.newBlob("", content_type, file_name);
  var file = blob.setDataFromString(jobj, "UTF-8");
  var folder = DriveApp.getFolderById(FOLDER_ID);
  var created = folder.createFile(file);
  var file_url = created.getUrl();
  return file_url;
}



create_public_holidays_json() を実行すると
指定したFOLDER_IDのフォルダに以下のようなJSONファイルが作成されます