GASを利用して、Googleカレンダーから複数のカレンダーのイベントを取得し、Chatworkのルームに転記しています。
問題なく動いていますが、以下のように表示されるため、開始時間でソートしたいと考えています。
Chatworkに転記した結果
09:00 - 10:00 : A 面談
11:00 - 12:00 : A 面談
08:30 - 09:30 : B 外出
13:30 - 16:00 : B 外出
10:00 - 17:00 : C 委員会
該当のソースコード
GAS
1function notifyDuty() { 2 var date = new Date(); 3 4 if(isBusinessDay(date)){ 5 deleteTrigger(); 6 get_Today_Schedule(); 7 }else{ 8 Logger.log('休日です'); 9 } 10} 11 12// その日の8時30分にトリガーを設定 13function setTrigger() { 14 var triggerDay = new Date(); 15 triggerDay.setHours(8); 16 triggerDay.setMinutes(30); 17 ScriptApp.newTrigger("notifyDuty").timeBased().at(triggerDay).create(); 18} 19 20// その日のトリガーを削除する関数(消さないと残る) 21function deleteTrigger() { 22 var triggers = ScriptApp.getProjectTriggers(); 23 for(var i=0; i < triggers.length; i++) { 24 if (triggers[i].getHandlerFunction() == "notifyDuty") { 25 ScriptApp.deleteTrigger(triggers[i]); 26 } 27 } 28} 29 30//営業日の判断をする関数 31function isBusinessDay(date){ 32 if (date.getDay() == 0 || date.getDay() == 6 ) { 33 return false; 34 } 35 var calJa = CalendarApp.getCalendarById('addressbook#contacts@group.v.calendar.google.com'); 36 if(calJa.getEventsForDay(date).length > 0){ 37 return false; 38 } 39 return true; 40} 41 42/*カレンダーのIDを取得*/ 43function get_Calendar() { 44 var arrCals=[]; 45 arrCals.push(CalendarApp.getCalendarById('XXXX@group.calendar.google.com'));//A 46 arrCals.push(CalendarApp.getCalendarById('xxxx@group.calendar.google.com'));//B 47 arrCals.push(CalendarApp.getCalendarById('xxxx@group.calendar.google.com'));//C 48 return arrCals; 49} 50 51/*今日の予定を取得するメインの関数*/ 52function get_Today_Schedule(){ 53 var arrCals = get_Calendar();//カレンダーID取得 54 var date = new Date(); 55 date.setDate(date.getDate());//日付に今日を指定 56 var strIntro = "[info][title]今日の予定[/title]"; 57 var strBody = strIntro; 58 /*カレンダーの今日のイベント取得*/ 59 for (var i = 0 ; i< arrCals.length ; i++){ 60 strBody = strBody + getEvents(arrCals[i],date); 61 } 62 63 if (strBody == strIntro){ 64 strBody = "[info][title]今日の予定[/title]予定はありません。" ; 65 } 66 67 strBody = strBody + '[/info]'; 68 69 /* チャットワークにメッセージを送る */ 70 var cwClient = ChatWorkClient.factory({token: 'xxxx'}); //チャットワークAPI 71 cwClient.sendMessage({ 72 room_id:xxxx, //送信先ルームID 73 body: strBody 74 }); 75} 76 77/*カレンダーのイベント取得*/ 78function getEvents(Cals,getDate){ 79 var arrEvents = Cals.getEventsForDay(getDate); 80 var strEvents =""; 81 for (var i=0; i<arrEvents.length; i++){ 82 var strTitle = arrEvents[i].getTitle(); 83 var strStart = _HHmm(arrEvents[i].getStartTime()); //開始時刻 84 var strEnd = _HHmm(arrEvents[i].getEndTime()); //終了時刻 85 if (strStart == strEnd){ 86 strEvents = strEvents + '終日イベント:' + strTitle + '\n'; 87 }else{ 88 strEvents = strEvents + strStart + ' - ' + strEnd+ ' : ' + strTitle + '\n'; 89 } 90 } 91 return strEvents; 92} 93 94/*時間の表示変更*/ 95function _HHmm(str){ 96 return Utilities.formatDate(str,'JST','HH:mm'); 97}
考えていること
strEventsの辺りに処理を追加するか、一度スプレッドシートに書き出してソートするのも解決策かと思いますが、どちらも具体的なコードまでイメージできていません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。