前提・実現したいこと
google apps script を使用してgoogleカレンダーにシフトを登録したいと思っています。
毎月1日以外のシフト登録はうまくいくのですが毎月1日のみ全ての勤務形態が登録されてします。
改善するにはどうしたらいいでしょうか。
発生している問題・エラーメッセージ
function executeInPosting() { //========================================================== // 設定箇所 //========================================================== var CALENDAR_ID = '@group.calendar.google.com'; var SHIFT1 = 'A'; var SHIFT2 = 'B'; var SHIFT3 = 'C'; var SHIFT4 = 'D'; var SHIFT5 = 'H'; var SHIFT6 = '休'; var YEAR_COLUMN = 'B'; var MONTH_COLUMN = 'C'; var SHIFT1_COLUMN = 'D'; var SHIFT2_COLUMN = 'E'; var SHIFT3_COLUMN = 'F'; var SHIFT4_COLUMN = 'G'; var SHIFT5_COLUMN = 'H'; var SHIFT6_COLUMN = 'I'; //---------------------------------------------------------- var sheet = SpreadsheetApp.getActiveSheet(); bottom = sheet.getLastRow(); var year = sheet.getRange(YEAR_COLUMN + bottom).getValue(); var month = sheet.getRange(MONTH_COLUMN + bottom).getValue(); var shift1 = sheet.getRange(SHIFT1_COLUMN + bottom).getValue(); var shift2 = sheet.getRange(SHIFT2_COLUMN + bottom).getValue(); var shift3 = sheet.getRange(SHIFT3_COLUMN + bottom).getValue(); var shift4 = sheet.getRange(SHIFT4_COLUMN + bottom).getValue(); var shift5 = sheet.getRange(SHIFT5_COLUMN + bottom).getValue(); var shift6 = sheet.getRange(SHIFT6_COLUMN + bottom).getValue(); var shift1List = String(shift1).split(','); var shift2List = String(shift2).split(','); var shift3List = String(shift3).split(','); var shift4List = String(shift4).split(','); var shift5List = String(shift5).split(','); var shift6List = String(shift6).split(','); // シフト1を登録 for (var i = 0; i < shift1List.length; i++) { var dateStr = year + '/' + month + '/' + shift1List[i]; Logger.log(dateStr); var date = new Date(dateStr); Logger.log(date); createEvent(CALENDAR_ID, SHIFT1, date,); Logger.log('createEvent() is done.'); } // シフト2を登録 for (var i = 0; i < shift2List.length; i++) { var dateStr = year + '/' + month + '/' + shift2List[i]; Logger.log(dateStr); var date = new Date(dateStr); Logger.log(date); createEvent(CALENDAR_ID, SHIFT2, date); Logger.log('createEvent() is done.'); } // シフト3を登録 for (var i = 0; i < shift3List.length; i++) { var dateStr = year + '/' + month + '/' + shift3List[i]; Logger.log(dateStr); var date = new Date(dateStr); Logger.log(date); createEvent(CALENDAR_ID, SHIFT3, date); Logger.log('createEvent() is done.'); } // シフト4を登録 for (var i = 0; i < shift4List.length; i++) { var dateStr = year + '/' + month + '/' + shift4List[i]; Logger.log(dateStr); var date = new Date(dateStr); Logger.log(date); createEvent(CALENDAR_ID, SHIFT4, date); Logger.log('createEvent() is done.'); } // シフト5を登録 for (var i = 0; i < shift5List.length; i++) { var dateStr = year + '/' + month + '/' + shift5List[i]; Logger.log(dateStr); var date = new Date(dateStr); Logger.log(date); createEvent(CALENDAR_ID, SHIFT5, date); Logger.log('createEvent() is done.'); } // シフト6を登録 for (var i = 0; i < shift6List.length; i++) { var dateStr = year + '/' + month + '/' + shift6List[i]; Logger.log(dateStr); var date = new Date(dateStr); Logger.log(date); createEvent(CALENDAR_ID, SHIFT6, date); Logger.log('createEvent() is done.'); } } // カレンダーに終日のイベントを作成 function createEvent(calendarId, title, date) { const calendar = CalendarApp.getCalendarById(calendarId); const event = calendar.createAllDayEvent(title, date); if (title === '休') event.setColor(CalendarApp.EventColor.PALE_RED); else event.setColor(CalendarApp.EventColor.PALE_BLUE); }
シフト予定が記載されているセルの内容をご提示ください。
また、ログに出ている、dateStrの出力もご提示ください。
回答1件
あなたの回答
tips
プレビュー