前提
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
1let calendarIds = { 2 'XXXXXX': 'XXXXXX', 3 'XXXXXX': 'XXXXXX', 4 'XXXXXX': 'XXXXXX' 5}; 6 7// スケジュールを取得 8function getSchedules() { 9 10 let schedules = []; 11 12 // メンバーのGoogleカレンダーIDを取得 13 let calendarId = Object.keys(calendarIds); 14 calendarId.forEach((calendarId)=>{ 15 16 // メンバーの名前をmemberに代入 17 let member = calendarId; 18 19 // myCalendarに各々のcalendarIdを格納 20 let myCalendar = CalendarApp.getCalendarById(calendarIds[calendarId]); 21 22 // 今日の年月日を取得 23 let today = new Date(); 24 let events = myCalendar.getEventsForDay(today); 25 26 for (let i in events) { 27 let event = events[i]; 28 29 let title = event.getTitle(); 30 31 let startHour = event.getStartTime().getHours(); 32 let startMinute = event.getStartTime().getMinutes(); 33 let endHour = event.getEndTime().getHours(); 34 let endMinute = event.getEndTime().getMinutes(); 35 36 return schedules = { 37 title: title, 38 startHour: startHour, 39 startMinute: startMinute, 40 endHour: endHour, 41 endMinute: endMinute 42 }; 43 }; 44 }); 45}; 46 47function notifySlack() { 48 let schedules = getSchedules(); 49 50 Logger.log(schedules); 51 52 let text = '本日の予定は以下になります。' 53 54 55 schedules.forEach((schedule)=>{ 56 text += '・'+schedule+'\n'; 57 }); 58 59 Logger.log(text); 60 61 let payload = { 62 'username': 'お知らせ', 63 'text': text, 64 'channel': '#general' 65 }; 66 67 let options = { 68 'method': 'post', 69 'contentType': 'application/JSON', 70 'payload': JSON.stringify(payload) 71 }; 72 73 const URL = 'https://hooks.slack.com/services/XXXXXX'; 74 UrlFetchApp.fetch(URL, options); 75}
補足情報(FW/ツールのバージョンなど)
Google Apps Script
OS Raspberry Pi OS 64bit
回答1件
あなたの回答
tips
プレビュー