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ファイルが作成されます