2020-09-16 (Wed) [長年日記]
_ Google Apps Scriptで出勤日カレンダーを作った
新型コロナ感染症対策のため、NaCl松江本社の開発メンバーは2グループに分かれて営業日は交互に在宅勤務し、感染拡大の状況によっては全メンバーが在宅勤務に移行する運用をしている(というのは原則で、メンバーの都合でフル出勤したり、ほとんど在宅勤務の人もいる)。
連休明けなどで出勤日がわからなくなる人が続出したため、Googleカレンダーに以下のようなISUCONで負けそうなGoogle Apps Scriptで出勤日の予定を自動登録してみた。
var OFFICE_DAY_CALENDAR_IDS = ["xxxxx", "xxxxx", ...];
function createOfficeDayEvents() {
var holidayCalendar = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
var officeDayCalendars = OFFICE_DAY_CALENDAR_IDS.map(function (id) {
return CalendarApp.getCalendarById(id);
});
var current = 0;
var date = new Date("2020/09/01");
var endDate = new Date("2020/12/25");
while (date <= endDate) {
var day = date.getDay();
if (day != 0 && day != 6 && holidayCalendar.getEventsForDay(date).length == 0) {
officeDayCalendars.forEach(function (calendar) {
calendar.getEventsForDay(date).forEach(function (event) {
event.deleteEvent();
});
});
officeDayCalendars[current].createAllDayEvent("出勤日", date);
current++;
if (current >= officeDayCalendars.length) {
current = 0;
}
}
date.setDate(date.getDate() + 1);
}
}