GOOGLEカレンダーの予定とToDoリストの内容を取得して、ラインに通知を入れる方法
頻繁に予定とやることを忘れるので
グーグルカレンダーに記入した予定や、ToDoリストの内容を
そのままラインに定期的に送信すれば、さすがに忘れないだろうと思い作成しました。
完成はこんな感じ。指定した時刻や日にちに通知を送ることができます。
作成したといっても、すでに作ってくださっている
Googleカレンダーから予定を取得してラインに送信する方法と
ToDoリストを取得する方法を合わせただけです。
なので、私はほとんどコピペしただけです。
Googleカレンダーから予定を取得してラインに送信する方法
参考サイト
www.wassyoi-hack.com
ToDoリストを取得する方法
www.virment.com
LINE Notifyの登録
グーグルのカレンダーとTodoリストの送信にLINE Notifyを使用します。
ログインしたら、マイページからアクセストークンを発行します。
トークン名は、グーグルから内容を取得してラインに送信するときに、LINE Notifyから通知がくる時に表示されるので、
カレンダー&Todoリスト とかにしとけばいいと思います。
通知をするトークルームは、
先にLINEでLINE Notifyを招待してグループを作っておき、そこを指定する方が楽かなと思います。
発行したトークンをコピーして、保存しておく
コピーしたトークンIDを下のコード内の"ライントークンID"の部分を消して、貼り付ければプログラムは完成です。
Google App script (gas)の使用
グーグルアカウントが必要です。ない方は、作成してください。
次に、グーグルドライブを開きます。
新規+からGoogle App Scriptを選択します。 ない方は、アプリ追加から追加してください。
下のコードとライントークンを合わせたものを、作成したGasに貼り付けます。
リソースのグーグル拡張サービスから、GoogleカレンダーとTodoリストのAPIを許可します。
次に。Google Clould platform APIでも....っていうリンクをクリックします。
Tasks APIを有効にします。
コード
var lineToken = " ライントークンID "; function myFunction() { var calendars = CalendarApp.getAllCalendars(); var text = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "\n"; //Calender for(i in calendars) { var calendar = calendars[i]; var events = calendar.getEventsForDay(new Date()); for(j in events) { var event = events[j]; var title = event.getTitle(); var start = toTime(event.getStartTime()); var end = toTime(event.getEndTime()); text += start + ' - ' + end + " " + title + '\n'; } if( events.length > 0 ) { text += "\n"; } } //sendToLine(text); //Todo List var myTaskLists = getTaskLists(); var myTasks = getTasks( myTaskLists[0].id ); var msg = "[Todo List]\n"; Logger.log( myTasks ); /*myTask[0].titleの配列を変更することで他のリストに変更することができる。*/ Logger.log( myTasks[0].title ); // = "first todo" for(i in myTasks){ msg += myTasks[i].title + "\n"; } text +=msg; 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); } function toTime(str){ return Utilities.formatDate(str, 'JST', 'HH:mm'); } function getTaskLists() { var taskLists = Tasks.Tasklists.list().getItems(); if (!taskLists) { return []; } return taskLists.map(function(taskList) { return { id: taskList.getId(), name: taskList.getTitle() }; }); } function getTasks(taskListId) { var tasks = Tasks.Tasks.list(taskListId).getItems(); if (!tasks) { return []; } return tasks.map(function(task) { return { id: task.getId(), title: task.getTitle(), notes: task.getNotes(), completed: Boolean(task.getCompleted()) }; }).filter(function(task) { return task.title; }); }
これをGoogle APP scriptに貼り付けて、好きな時間にトリガーを設定したら大丈夫だと思います。
"ラインID"の部分に取得した、アクセストークンを入力します。
ちょっとめんどくさくなっって、時間なくなったので更新しました。
そのうち続きを更新します。
実行方法
myFunctionの関数を実行するととりあえずは、プログラムは動作します。
ここで、Googleにアクセスする許可を求められるので、許可してください。
トリガーの設定
このままでは、定刻にプログラムが動作してくれないので
指定した時刻にプログラムが勝手に起動してくれるトリガーを設定します。
時計みたいなアイコンをクリックしてトリガーの設定を行います。
午前7〜8時の間に通知を送る場合のトリガー
複数のトリガーを設定をすることも可能です。好きな時間にセットしてください。
こんな感じになります。