みなさんこんにちは。ノンプログラマーのうえはらです。
前回は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週間の予定を配信する。
これで、予定を忘れる事もなくなるはず・・・。
コメント