Googleカレンダーの予定をLINEに送信する

やさごろもです。

以前、LINE Notifyを使ってGoogleフォームの回答が送信されたらLINEのグループに通知する方法を紹介しました。今回は同様にGoogleカレンダーに登録されている予定をLINEに通知する方法を紹介しようと思います。

Googleカレンダーの予定をLINEに送信する

今日の予定と、今日から1週間分の予定を取得する設定をしていきます。

1.LINEでグループを作る

アプリのLINEを起動して、Googleカレンダーの予定を送るためのグループを作ります。

2.Line Notifyでトークンを発行する

LINEに登録しているアカウントでLINE Notifyのページにログインし、トークンを発行します。発行の仕方については前回の記事を参考にしてください。トークンを発行した後は作ったグループにLINE Notifyのアカウントを招待してください。
Googleフォームの回答通知をLINEで受け取る

3.Google Apps Script でコードを記述する

chromeアプリの「Google Apps Script」を開きます。無い場合はchromeのウェブストアから取得してください。

アプリ Google Apps Script

アプリ Google Apps Script

開いたら下記コードを貼り付けます。

Google Apps Script

var lineToken = "ここに発行したトークンを貼る";

function main() {
  var calendar = CalendarApp.getDefaultCalendar();
  var text = "\n";
  var date = new Date();
  var y = date.getFullYear();
  var m = date.getMonth();
  var d = date.getDate();
  
  var TodayEvent = calendar.getEventsForDay(date);
  var WeekEvents = calendar.getEvents(date,new Date(y,m,d + 7));
  
  text += "\n【今日の予定】\n";
  if( TodayEvent.length > 0 ) {
    for(i in TodayEvent) {
      var event = TodayEvent[i];
      var title = event.getTitle();
      var start = Utilities.formatDate(event.getStartTime(), "JST", "MM/dd")
      text += start +  " " + title + '\n';
    }
  }else{
    text += "予定無し\n";
  }
  
  text += "\n【1週間の予定】\n";
  if( WeekEvents.length > 0 ) {
    for(j in WeekEvents) {
      var event = WeekEvents[j];
      var title = event.getTitle();
      var start = Utilities.formatDate(event.getStartTime(), "JST", "MM/dd")
      text += start +  " " + title + '\n';
    }
  }else{
    text += "予定無し\n";
  }
  
  sendToLine(text);
}

function sendToLine(text){
  var token = lineToken;
  var options =
   {
     "method"  : "post",
     "payload" : "message=" + text,
     "headers" : {"Authorization" : "Bearer "+ token}

   };
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

わたしはカレンダーを1つしか作っていなかったので


var calendar = CalendarApp.getDefaultCalendar();
で、予定を取得するカレンダーを指定しております。複数のカレンダーを持っている場合はIDや名前で指定できるみたいです。
参考 Googleカレンダーにアクセスする (2/5)初心者のためのGoogle Apps Scriptプログラミング入門

var TodayEvent = calendar.getEventsForDay(date);
var WeekEvents = calendar.getEvents(date,new Date(y,m,d + 7));
TodayEventは今日の予定、WeekEventsは1週間分の予定です。d(Day)に7日プラスしています。


var event = TodayEvent[i];
var title = event.getTitle();
var start = Utilities.formatDate(event.getStartTime(), "JST", "MM/dd")
titleに予定の名前、startにその予定がある日付を書き出すようにします。予定が何も無い場合は「予定無し」と書かれるようにしました。

4.トリガーを設定する

上部メニューの「編集」→「現在のプロジェクトのトリガー」を開いて、トリガーを追加します。
わたしは下記設定にしました。お好みの時間を設定してください。

  • 実行する関数 → main
  • イベントのソース → 時間主導型
  • 時間ベースのトリガーのタイプ → 日付ベースのタイマー(例)
  • 時刻 → 午前7時〜8時(例)

5.実行

これで設定した時間になればLINEが届くはず。

LINEの画面

LINEの画面
(手動実行したので設定した時間とは異なってます)

y(Year)に1を足せば1年分、m(Month)に1を足せば1ヶ月分の予定を取得することができます。好きな期間を設定してください。
ちなみに自動で毎週入れている予定があると全部列挙され、とんでもない長文ラインが届きました。ご注意ください。

参考 毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送るいつも隣にITのお仕事

ではまた。