前提
Gpogleカレンダーの予定を1か月分LINEに送信したいと考えています。
1週間分をアレンジして1か月分を送信することは可能そうなのですが、
予定のない日も「〇月〇日」とでてしまい、文章が長くなってしまう状況です。
予定がある日だけまとめてピックアップして通知してもらえるようにしたいと考えています。
実現したいこと
1月16日(月)
予定
1月20日(金)
予定
発生している問題・エラーメッセージ
予定がない日も 1月20日(金) (空白) と送信されてしまいます。
該当のソースコード
function myFunction(){ var startDate = new Date(); var period = 31; // 予定を表示したい日数 startDate.setDate(startDate.getDate() + 1); var schedule = getSchedule(startDate, period); var message = scheduleToMessage(schedule, startDate, period); sendToLINE(message); } // Googleカレンダーから予定取得 function getSchedule(startDate, period){ var calendarIDs = ['〇〇〇']; //カレンダーIDの配列。カレンダーを共有している場合、複数指定可。 var schedule = new Array(calendarIDs.length); for(var i=0; i<schedule.length; i++){schedule[i] = new Array(period);} for(var iCalendar=0; iCalendar < calendarIDs.length; iCalendar++){ var calendar = CalendarApp.getCalendarById(calendarIDs[iCalendar]); var date = new Date(startDate); for(var iDate=0; iDate < period; iDate++){ schedule[iCalendar][iDate] = getDayEvents(calendar, date); date.setDate(date.getDate() + 1); } } return schedule; } function getDayEvents(calendar, date){ var dayEvents = ""; var events = calendar.getEventsForDay(date); for(var iEvent = 0; iEvent < events.length; iEvent++){ var event = events[iEvent]; var title = event.getTitle(); var startTime = _HHmm(event.getStartTime()); var endTime = _HHmm(event.getEndTime()); dayEvents = dayEvents + '・' + startTime + '-' + endTime + ' ' + title + '\n'; } return dayEvents; } function scheduleToMessage(schedule, startDate, period){ var now = new Date(); var body = '\n1週間の夜や出張の予定です。ご迷惑をお掛けしますが、宜しくお願い致します。\n' + '(' +_Md(now) + ' ' +_HHmm(now) + '時点)\n' + '--------------------\n'; var date = new Date(startDate); for(var iDay=0; iDay < period; iDay++){ body = body + _Md(date) + '(' + _JPdayOfWeek(date) + ')\n'; for(var iCalendar=0; iCalendar < schedule.length; iCalendar++){ body = body + schedule[iCalendar][iDay]; } date.setDate(date.getDate() + 1); body = body + '\n'; } return body; } // LINE通知 function sendToLINE(message){ var token = '〇〇〇'; //LINE Notifyのトークン var options = { "method": "post", "payload": "message=" + message, "headers": {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); } // 日付指定の関数 function _HHmm(date){ return Utilities.formatDate(date, 'JST', 'HH:mm'); } function _Md(date){ return Utilities.formatDate(date, 'JST', 'M/d'); } function _JPdayOfWeek(date){ // date = new Date() var dayStr = ['日', '月', '火', '水', '木', '金', '土']; var dayOfWeek = date.getDay(); return dayStr[dayOfWeek]; }
試したこと
https://www.shanaidx.com/calendar_akijikan/
など空いている日を設定など、引いていけばよいのかと思いましたが、余計に複雑になりました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/19 05:00
2023/01/19 05:00
2023/01/25 04:48
2023/01/25 05:18
2023/01/25 05:57