TypeError: Cannot read property 'forEach' of undefinedというエラーを解消したい

前提

Googleカレンダーの予定をSlackのチャンネルに投稿するシステムをGASで開発しています。

実現したいこと

  • Googleカレンダーの予定を取得

  • 取得した予定をWebhookを使ってSlackのチャンネルに投稿

  • 48行目の変数schedulesに36行目から42行目のオブジェクトを格納したい

  • 変数schedulesから55行目のforEach文でオブジェクトプロパティを読み込みたい

発生している問題・エラーメッセージ

48行目の変数schedules(配列とその中にオブジェクトが入っているはず)がnullになっている。
よって、55行目のforEach文でオブジェクトプロパティを読み込めない。

エラー TypeError: Cannot read property 'forEach' of undefined notifySlack @ コード.gs:55

該当のソースコード

JavaScript

let calendarIds = { 'XXXXXX': 'XXXXXX', 'XXXXXX': 'XXXXXX', 'XXXXXX': 'XXXXXX'}; // スケジュールを取得function getSchedules() { let schedules = []; // メンバーのGoogleカレンダーIDを取得 let calendarId = Object.keys(calendarIds); calendarId.forEach((calendarId)=>{ // メンバーの名前をmemberに代入 let member = calendarId; // myCalendarに各々のcalendarIdを格納 let myCalendar = CalendarApp.getCalendarById(calendarIds[calendarId]); // 今日の年月日を取得 let today = new Date(); let events = myCalendar.getEventsForDay(today); for (let i in events) { let event = events[i]; let title = event.getTitle(); let startHour = event.getStartTime().getHours(); let startMinute = event.getStartTime().getMinutes(); let endHour = event.getEndTime().getHours(); let endMinute = event.getEndTime().getMinutes(); return schedules = { title: title, startHour: startHour, startMinute: startMinute, endHour: endHour, endMinute: endMinute }; }; });}; function notifySlack() { let schedules = getSchedules(); Logger.log(schedules); let text = '本日の予定は以下になります。' schedules.forEach((schedule)=>{ text += '・'+schedule+'\n'; }); Logger.log(text); let payload = { 'username': 'お知らせ', 'text': text, 'channel': '#general' }; let options = { 'method': 'post', 'contentType': 'application/JSON', 'payload': JSON.stringify(payload) }; const URL = 'https://hooks.slack.com/services/XXXXXX'; UrlFetchApp.fetch(URL, options);}

補足情報(FW/ツールのバージョンなど)

Google Apps Script
OS Raspberry Pi OS 64bit

コメントを投稿

0 コメント