みなさんこんにちは。ノンプログラマーのうえはらです。
前回はGoogle Apps ScriptでLINEのグループにメッセージを送る方法をお伝えしました。
前回が結構前で申し訳ありませんm(__)m
LINEにメッセージが遅れるようになると、なんか楽しいですよね!
当日の予定を送信する事は出来るようになったので、今回はGoogle Apps ScriptでGoogleカレンダーの1週間分の予定を取得したいと思います。
複数のカレンダーから1週間の予定を取得する
それでは、複数のカレンダーから1週間の予定を取得するスクリプトです。
get_Week_Schedule()がメインの関数で、これを実行することで、予定を取得します。
今回はLog出力としています。Ctrl + Enter で確認してください。
function get_Calendar() { /*カレンダーのIDを取得*/ var arrCals=[]; arrCals.push(CalendarApp.getCalendarById('******@gmail.com')); arrCals.push(CalendarApp.getCalendarById('****************@group.calendar.google.com'));//小学校 arrCals.push(CalendarApp.getCalendarById('****************@group.calendar.google.com'));//高校 arrCals.push(CalendarApp.getCalendarById('****************@group.calendar.google.com'));//PTA return arrCals; } //1週間の予定を取得するメインの関数// function get_Week_Schedule(){ var arrCals = get_Calendar(); var dateNow = new Date(); var date = new Date(); var strBody =''; var tmpBody =''; var strIntro = "おつかれさまです。\nうえはら家の1週間の予定です。\n" ; for (var j = 1; j < 7 ; j++ ){ date.setDate(dateNow.getDate()+j); for (var i = 0 ; i < arrCals.length ; i++){ tmpBody = tmpBody + getEvents(arrCals[i],date); } if (tmpBody){ strBody = strBody + date.getDate() + '日\n' + tmpBody; } tmpBody = ''; } Logger.log(strIntro + strBody); } //予定を取得する関数// function getEvents(Cals,getDate){ var strName = Cals.getName();//カレンダーの名前取得 var arrEvents = Cals.getEventsForDay(getDate);//カレンダーの予定取得 var strEvents =''; for (var i=0; i<arrEvents.length; i++){ var strTitle = arrEvents[i].getTitle(); var strStart = _HHmm(arrEvents[i].getStartTime()); var strEnd = _HHmm(arrEvents[i].getEndTime()); if (strStart == strEnd){ strEvents = strEvents + '終日イベント:' + strTitle + ' (' + strName + ')' + '\n'; }else{ strEvents = strEvents + strStart + '~' + strEnd+ ':' + strTitle + ' (' + strName + ')' + '\n'; } } return strEvents; } function _HHmm(str){ return Utilities.formatDate(str,'JST','HH:mm'); }
今日の予定を取得する時はまだ中学生だった娘も、ブログ更新していない間に高校生になってしまいました・・・
Googleカレンダーのイベント取得
まずは、イベントを取得する33~48行のgetEvents関数ですが、これについては以前説明しているので、割愛します。
1週間の予定を取得するメインの関数
今回説明する、メインの部分です。
13~31行の部分です。
当日の予定を取得する時は下記のように表示させました。
予定が有るとき↓ おはようございます。 今日のうえはら家の予定です。 10:00~11:00:PTA総会(PTA) 終日イベント:参観日(小学校) 予定が無いとき↓ おはようございます。 今日のうえはら家の予定はありません。
今回は1週間の予定なので、日付を入れる必要があります。
具体的には下記のような、メッセージを作成します。
なお、うちの場合、1週間全く予定が無いことがないので、予定無しは省略しています。
おつかれさまです。 うえはら家の1週間の予定です。 11日 19:00~21:00:市P理事会(PTA) 20日 10:00~11:00:PTA総会(PTA) 終日イベント:参観日(小学校)
20行目のfor文で今日の日付に1日ずつプラスして、1週間の予定を取得します。
指定日の予定をtmpBodyに追加していきます。
予定があれば(tmpBody ==! 0)の時に、日付 + 改行 + 予定をstrBodyに追加していきます。
表示方法は、それぞれ好みがあると思いますので、調整してください。
まとめ
今回は、Google Apps ScriptでGoogleカレンダーの1週間分の予定を取得しました。
以前、当日の予定を取得しているので、それをちょっと工夫すれば1週間取得することができます。
次回は、トリガーを設定して自動でLINEへメッセージが送信される方法をお伝えします。
なるべく早く・・・。
連載目次:GASでGoogleカレンダーの予定をLINEに送る
GASでGoogleカレンダーの予定をLINEに送る方法をお伝えします。
配信内容は、下記の様にします。
1.毎朝(07:05)、その日の予定を配信する。
2.夕方(19:05)、向こう1週間の予定を配信する。
これで、予定を忘れる事もなくなるはず・・・。
コメント