勤務をグーグルカレンダーで管理しているのですが、変則勤務のため同じ勤務内容でも何度も入れないといけないのが手間なので、グーグルフォームで答えた日にちに自動的に勤務が入るようにしたところ、nullで帰ってくるようになりました。
当方初心者でどこを改善したらいいかわからないので教えていただけたらと思います。
発生している問題・エラーメッセージ
エラー TypeError: Cannot read property 'createEvent' of null createEvent @ コード.gs:94 executeInPosting @ コード.gs:49
該当のソースコード
以下、太字のところが該当する箇所です。
function executeInPosting() {
//==========================================================
// 設定箇所
//==========================================================
var CALENDAR_ID = '予定を入れたいカレンダーのID@gmail.com';
var SHIFT1_NAME = '早番';
var SHIFT1_START_TIME = '-7:00';
var SHIFT1_END_TIME = '2:00'
var SHIFT2_NAME = '日勤';
var SHIFT2_START_TIME = '-6:30';
var SHIFT2_END_TIME = '3:30';
var SHIFT3_NAME = '遅番';
var SHIFT3_START_TIME = '-4:00';
var SHIFT3_END_TIME = '5:00'
var SHIFT4_NAME = '夜勤';
var SHIFT4_START_TIME = '2:30';
var SHIFT4_END_TIME = '19:00'
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 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 shift1List = String(shift1).split(',');
var shift2List = String(shift2).split(',');
var shift3List = String(shift3).split(',');
var shift4List = String(shift4).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_NAME, date, SHIFT1_START_TIME, SHIFT1_END_TIME);
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_NAME, date, SHIFT2_START_TIME, SHIFT2_END_TIME);
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_NAME, date, SHIFT3_START_TIME, SHIFT3_END_TIME);
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_NAME, date, SHIFT4_START_TIME, SHIFT4_END_TIME);
Logger.log('createEvent() is done.');
}
}
// カレンダーに時間帯のイベントを作成
function createEvent(calendarId, title, date, startTime, endTime) {
var calendar = CalendarApp.getCalendarById(calendarId);
//calendar.createAllDayEvent(title, date);
var startDateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), Number(startTime.split(':')[0]), Number(startTime.split(':')[1]));
var endDateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), Number(endTime.split(':')[0]), Number(endTime.split(':')[1] ));
Logger.log('startDateTime');
Logger.log(startDateTime);
Logger.log('endDateTime');
Logger.log(endDateTime);
calendar.createEvent(title, startDateTime, endDateTime);
}
なぜnullで帰ってきているかなど、詳細教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー