function getTomorrowWorkingHours() {
const ONE_HOUR_MINS = 60;
const DEFAULT_WORK_MINS = 8 * ONE_HOUR_MINS;
const SECOND_MILLISECOND = 1000;
const MINUTE_MILLISECOND = ONE_HOUR_MINS * SECOND_MILLISECOND;
var targetDate = getNextWorkingDate(new Date());
var events = CalendarApp.getDefaultCalendar().getEventsForDay(targetDate);
Logger.log('翌日のMTGの数: ' + events.length);
var mtg_minuts = 0
for( var i = 0; i < events.length; ++i ) {
var event = events[i]
if(!event.isAllDayEvent() && event.getStartTime().getHours() < 19 && event.getMyStatus() !== CalendarApp.GuestStatus.NO ) {
mtg_minuts = mtg_minuts + (event.getEndTime().getTime() - event.getStartTime().getTime()) / MINUTE_MILLISECOND ;
var startTimeStr = Utilities.formatDate(event.getStartTime(), 'JST', 'HH:mm');
var endTimeStr = Utilities.formatDate(event.getEndTime(), 'JST', 'HH:mm');
Logger.log('event name: ' + startTimeStr + '-' + endTimeStr + ' ' + event.getTitle() );
}
}
var tomorrowWorkingTimeMsg = '翌営業日のあなたの作業時間: ' + ((DEFAULT_WORK_MINS - mtg_minuts) / ONE_HOUR_MINS ) + '時間';
Logger.log(tomorrowWorkingTimeMsg);
MailApp.sendEmail('your_name@your_domain','翌営業日のあなたの作業時間', tomorrowWorkingTimeMsg)
}
function getNextWorkingDate(date){
const holidayCalenderOfJapanese = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
var targetDate = date;
while(true){
targetDate.setDate(targetDate.getDate() + 1);
if (targetDate.getDay() == 0 ||
targetDate.getDay() == 6 ||
holidayCalenderOfJapanese.getEventsForDay(targetDate).length > 0){
targetDate.setDate(targetDate.getDate() + 1);
}else{
return targetDate;
}
}
}