前提
GASでGoogleカレンダーに登録された予定をSlackのチャンネルに投稿するシステムを開発しています。
スケジュールを取得する機能を実装中に以下の問題が発生しました。
実現したいこと
オブジェクトschedules(10、35、42、44、46、50、51、56行目)の中身の順番を、
title, startHour, startMinute, endHour, endMinuteの順に整形したいです。
発生している問題・エラーメッセージ
オブジェクトschedules(10、35、42、44、46、50、51、56行目)の中身の順番が、
バラバラ且つコードを実行したときによって順番が違う
該当のソースコード
JavaScript
1let calendarIds = { 2 'XXXXXXXX': 'XXXXXXXX', 3 'XXXXXXXX': 'XXXXXXXX', 4 'XXXXXXXX': 'XXXXXXXX' 5}; 6 7// スケジュールを取得 8function getSchedules() { 9 10 let schedules = []; 11 // メンバーのGoogleカレンダーIDを取得 12 let calendarId = Object.keys(calendarIds); 13 calendarId.forEach((calendarId)=>{ 14 15 // メンバーの名前をmemberに代入 16 let member = calendarId; 17 18 // myCalendarに各々のcalendarIdを格納 19 let myCalendar = CalendarApp.getCalendarById(calendarIds[calendarId]); 20 21 // 今日の年月日を取得 22 let today = new Date(); 23 let events = myCalendar.getEventsForDay(today); 24 25 for (let i in events) { 26 let event = events[i]; 27 28 let title = event.getTitle(); 29 30 let startHour = event.getStartTime().getHours(); 31 let startMinute = event.getStartTime().getMinutes(); 32 let endHour = event.getEndTime().getHours(); 33 let endMinute = event.getEndTime().getMinutes(); 34 35 return schedules = { 36 title: title, 37 startHour: startHour, 38 startMinute: startMinute, 39 endHour: endHour, 40 endMinute: endMinute 41 }; 42 return schedules; 43 }; 44 return schedules; 45 }); 46 return schedules; 47}; 48 49function notifySlack() { 50 let schedules = getSchedules(); 51 Logger.log(schedules); 52 53 let text = '本日の予定は以下になります。'; 54 Logger.log(text); 55 56 Object.keys(schedules).forEach(key => { 57 Logger.log(text += '・'+schedules[key]+'\n'); 58 }) 59 60 let payload = { 61 'username': 'お知らせ', 62 'text': text, 63 'channel': '#general' 64 }; 65 66 let options = { 67 'method': 'post', 68 'contentType': 'application/JSON', 69 'payload': JSON.stringify(payload) 70 }; 71 72 const URL = 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXX'; 73 UrlFetchApp.fetch(URL, options); 74};
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/08 09:09