- 2018.04.11
- 技術ブログ
GAS × LINE Notifyで電車の遅延情報を通知するbotを作ってみた。
こんにちはtoshiです。
突然ですが、皆さんは通勤や通学の手段は何を使用していますでしょうか?
私はJRを利用しているのですが、運行情報を確認せずに家を出ることが多いので、
いざ駅に着いてみると電車が遅延しているということが多々あります。
今回はそんな自分のためにLINE NotifyとGoogle Apps Scriptを使用して、
電車の遅延情報を通知するbotを作成してみたいと思います。
LINE Notifyのアクセストークンを取得する
LINE Notifyを利用するにはLINE Notifyのアクセストークンを取得する必要があります。
LINEのアカウントを使用し、LINE Notifyにログインしてマイページに移動します。
マイページに移動したら「トークンを発行する」ボタンを押します。
トークン名と通知を送信するルームを選択し「発行する」ボタンを押します。
トークン名は通知内に表示されるので「運行情報」と入力しました。
トークンが発行されますので控えておきましょう。
LINE Notifyアカウントをbotで通知したい部屋に追加する
LINE Notifyで通知を行うには通知を行いたい部屋にLINE Notifyアカウントを追加する必要があります。
トークン発行時に指定した部屋にLINE Notifyアカウントを追加しましょう。
Google Apps Scriptでスクリプトを作成する
以下のように遅延情報を取得するスクリプトとLINE Notifyにリクエストを送信するスクリプトを作成します。
遅延情報は鉄道遅延情報のjsonから取得させていただいています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
function getDelayInfo() { //電車遅延情報をJSON形式で取得 var json = JSON.parse(UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json").getContentText()); //路線名を指定 var name="函館本線"; //運営会社名を指定 var company="JR北海道"; var message=""; for each(var obj in json){ //指定した路線名と運営会社名に一致する遅延情報を取得 if(obj.name === name && obj.company === company){ message = company + name + "が遅延しています"; } } if(!message){ message = "現在遅延情報はありません"; } //遅延情報をLINE Notifyに送信 sendHttpPost(message); } function sendHttpPost(message){ //アクセストークンを設定 var token = ["LINE Notify アクセストークン"]; //LINE Notifyに送るリクエストを設定 var options = { "method" : "post", "payload" : "message=" + message, "headers" : {"Authorization" : "Bearer "+ token} }; //リクエスト送信 UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options); } |
スクリプトを実行する
スクリプトが完成したので試しに実行してみます。
LINE Notifyから通知がきていることが確認できました!
ちょうど実行した4月10日9時33分時点では、設定した路線で遅延が起きていました。
定期実行設定をする
スクリプトを作成しただけでは手動で実行する必要があるので、指定した時間に定期実行するように定期実行設定を行います。
Google Apps Scriptの「現在のプロジェクトのトリガー」にて、
週タイマーで毎週月曜日から金曜日の午前5時〜6時の間に、自動実行されるように設定します。
まとめ
いかがだったでしょうか。
今回は、電車の運行情報を取得していましたが、
OpenWetherMapなどを利用して天気情報なども取得可能かと思います。
他にも色々応用できるかと思いますのでぜひ皆さんも試してみてください!
<<参考文献>>
Google Apps Scriptで毎朝チャットワークに電車の遅延情報をプッシュ通知する
Google Apps ScriptからLINE NotifyでLINEにメッセージを送る