GASで複数のGoogleカレンダーの予定を1週間取得する

GASで1週間の予定をゲットだぜ GoogleAppsScript(GAS)
スポンサーリンク

みなさんこんにちは。ノンプログラマーのうえはらです。

前回はGoogle Apps ScriptでLINEのグループにメッセージを送る方法をお伝えしました。

前回が結構前で申し訳ありませんm(__)m

GASでLINEのグループにメッセージを送る
Google Apps ScriptからLINEのグループへメッセージを送信する方法をお伝えします。

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関数ですが、これについては以前説明しているので、割愛します。

GASで複数のGoogleカレンダーから今日の予定を取得する
Google Apps Scriptで複数のGoogleカレンダーから今日の予定を取得する方法をお伝えします。シリーズの最終目標はGoogleカレンダーの予定をLINEに送ることです。

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週間の予定を配信する。

これで、予定を忘れる事もなくなるはず・・・。

  1. GASで複数のカレンダーから今日の予定を取得する
  2. GASでLINEのグループIDを確認する
  3. GASでLINEのグループにメッセージを送る
  4. GASで複数のGoogleカレンダーの予定を1週間取得する

コメント

タイトルとURLをコピーしました