神ゲーだった

LINE Notifyを使って自動で天気予報/電車の遅延/ブログ更新などの通知を取得する

LINE Notifyを使って自動で天気予報/電車の遅延/ブログ更新などの通知を取得する

「検索して知りたい情報を調べる」って良く有ることだと思うんですけど、検索する手間が面倒ですよね。
その手間を省くために「LINE Notifyを使って自動で色んな情報を取得してみよう」が今回のテーマです。
今回はLINE Notify以外に、IFTTTやGAS(Google Apps Script)を使います。

目的に応じたサービスやアプリを使うことで通知を受信することも出来ますが、通知を受信するアプリを一元化できるという点と、通知の条件を細かく指定できるという点でも優れています。手間暇とのトレードオフで当人の好みにもよりますが、最初さえ組んでしまえば後は楽なのでもし興味が少しでも有ればぜひどうかな~と思います。

例えばTwitterでは任意の方の発言をモバイル通知できますが、すべての発言が通知されてしまう為にやや冗長的な通知となってしまいます。
任意の方の◯◯というキーワードを含んだ発言のみを通知させるだったり、不特定の方から◯◯と◯◯を含んだキーワードを含んだ発言のみを通知させるだったり、やり方次第で自由が利くので便利だな~と思います。

全部が全部書いてないので後日どこかで追記しようと思います・・

例えば

  • 定期的なもの(毎朝とか)
  • 天気予報を通知させる。
  • ゴミ収集日を通知させる。
  • Googleカレンダーの予定を通知させる。
  • 何か帰り際に買ってきて欲しいものが有るか聞く。
  • 不定期的なもの(そういう時だけ)
  • 電車が遅延したら通知させる。
  • 雨が降りそうになったら通知させる。
  • Twitterで特定のツイートやエゴサwを通知させる。
  • サイトの更新情報をRSSリーダーのように通知させる。

設定内容など、本ページは2020年5月11日時点の内容です。

目次

LINE Notifyとは?

LINEが提供する公式アカウントです。
これを介してIFTTT等のWebサービスやアプリケーションと連携することで、LINE上で通知の受取が出来ます。

利用料金は無料となっていますが、下記のような制限が設けられています。
先に挙げた内容を自身に通知するような個人利用の範囲では、まず問題無いと思います。

  1. 1時間に通知できる回数は1,000回まで
  2. 広告や販売促進などの目的による利用は禁止
  3. 同一または類似のメッセージを不特定多数に送信する行為は禁止

IFTTTとは?

IFTTTは、様々なwebアプリケーションやアプリ同士を連携させる事が出来るwebサービスです。
「if this then that」の略で、「こうなったら(if this)」というトリガーを基に「こうする(then that)」というアクションを行うことが出来ます。
連携するAのサービスをトリガーに、Bのサービス側でアクションさせる事が出来るので、主に作業内容の自動化や管理の一元化に使われています。
直感的に操作できる上、様々なAppletと呼ばれるレシピが公開されているので、非エンジニアでも使いやすいと思います。

GASとは?

GASは、Googleが提供をしているGoogle Apps Scriptというサーバー上で動作するサービスです。
GAS独自の関数やルールは少し有るものの、Java ScriptやHTMLなどの言語でプログラム出来て、Googleの各サービスだけでなくSlack・Twitter・LINE Notify等と外部APIを使って連携できます。
Googleサーバー上で動作するため費用が掛からず、常時稼働させて特定のイベントやスケジュールをトリガーに様々な事柄を自動化させることが出来ます。

導入方法

自動化に際して、今回は上記3点の「LINE Notify・IFTTT・GAS」というサービスを使い分けます。
LINE Notify + IFTTT or GASという使い方で、基本的にはIFTTTを使います。
IFTTTとGASについては下記のような感じです。

  1. IFTTTなどのWEBサービスと連携させるか
  2. トークンを発行してGASなどを介して設定させるか

(1)のIFTTTの場合は、既に膨大な数のAppletが用意されているので、大抵の事柄はすぐに見つけられて、こうなったらこうするというルールを自分用に少し変えるだけで良いです。

(2)のトークンの場合は、前述の通りJava Script・HTML・Python・Rubyなどでスクリプト(コード)を実行する環境を構築する必要が有ります。GASを使うと費用が掛からない環境を構築しやすくてスクリプト自体は検索すれば先人の知識が有るのでほぼコピペで実現できるけど、なんにせよ設定のための手間暇が掛かるかもって感じです。

例えばコピペするにしても自分用にどこをどう弄れば良いのかとか、スクリプトはこう書いてあるのが見つかったけどアクセストークンとかあんまり漏れるとよろしくない情報をコード内に書くよりはOSの環境変数に書いておいてスクリプトで読み込むほうが良いとか、勝手がイマイチ分からんくない?w

ということで僕は知識も無いし勉強してるわけでも無く、「これを実現させるにはこういう方法が有るんだ~良く分からないけど設定してみよう」程度なので、基本的にはIFTTTのAppletで実現させて用意されていない場合はGASを介した環境から実現させようって感じで行いました。
知識が有る場合は自由に設定できる分、上記で言う(2)の方法が良いのだろうなぁと思いました。

以上から今回設定した内容は、基本的に(1)のIFTTTで既に有るAppletを用いて簡易的に実現させています。
更に自分好みの内容にしたい場合は自作Appletを作るか叶うようなスクリプトを作るか、になると思います。

LINE NotifyとIFTTTの導入方法

LINE Notifyを友だち追加して、IFTTTと連携済みになればOKです。

STEP
LINE Notifyを友だち追加します。

検索

QRコード

STEP
メッセージが届くので一番上のリンクからLINE Notifyのページへ飛んでログインします。
STEP
ログイン後「マイページ」を開き、連携するサービスを選択します。
他にも有りますがとりあえずIFTTTを選択すると良いです。

前述の通り画像のように2通りの方法が有ります。
「上部」のサービスとの連携する方法は、楽なので基本的にこちらで行うと良いです。
「下部」のトークンを利用する方法は、開発者向けでGASと連携など手間が必要です。
※GAS=Google Apps Script

STEP
「Connect」から「Apple・Google・Facebook」のいずれかで認証させます。
STEP
LINE Notifyと連携できていたらOKです。

GASの導入方法

スタンドアロンタイプとコンテナバインドタイプの2種類が有ります。
良し悪し有って一概には言いづらいけど、僕みたいに少し触る程度ならコンテナバインドタイプの方が良いかもしれません。

  1. スタンドアロンタイプ(Standalone Scripts)

スクリプト単独のファイルでGoogleドライブ上に表示されるため検索できて管理しやすいです。
1つのスクリプトを複数のG Suiteアプリから利用できます。

コンテナバインドでのみ使えるコードはスタンドアロンの場合エラーになります。
IDや名前を指定する必要が有ります。

STEP
Googleドライブから「新規」>「その他」>「Google Apps Script」で開けます。
STEP
別タブでスクリプトエディタが開きます。
名前を付けて保存するとドライブ上にスクリプト単独のファイルが表示されます。
  1. コンテナバインドタイプ(Container Bound Scripts)

スプレッドシートの値が変わった時をトリガーにするなど特有のコードが利用できます。

スクリプト単独のファイルではGoogleドライブ上には表示されないので管理がしにくいです。

STEP
スプレッドシートなどから「ツール」>「スクリプトエディタ」で開けます。
STEP
別タブでスクリプトエディタが開きます。
名前を付けて保存するとドライブ上にはG Suiteアプリが表示されます。

その日の天気予報を朝に通知させる方法

LINE Notify + IFTTT

STEP
IFTTTで「天気予報」などと検索して任意のAppletを選びます。
今回は「今日の天気予報を決まった時間にLINEへ通知する」を選びました。
STEP
「時間」・「場所」などを設定すればOKです。

こんな感じで通知してくれます。

雨が降りそうになったら通知させる方法

LINE Notify + IFTTT

STEP
IFTTTで「雨」などと検索して任意のAppletを選びます。
今回は「雨が振りそうになったらLINEに通知する」を選びました。
※「降る」の漢字が違うけど、気になるならMy Appletsで変更できます。
STEP
「天候条件」・「場所」などを設定すればOKです。

こんな感じで通知してくれます。

明日の天気が雨のときに通知させる方法

LINE Notify + IFTTT

STEP
IFTTTで「明日の天気」などと検索して任意のAppletを選びます。
今回は「明日の天気が雨の時にLINEでお知らせ」を選びました。
STEP
「天候条件」・「場所」などを設定すればOKです。

こんな感じで通知してくれます。

Googleカレンダーの予定を通知させる方法

LINE Notify + IFTTT

STEP
IFTTTで「カレンダー line」などと検索して任意のAppletを選びます。
今回は「GoogleCalender → LINE」を選びました。
STEP
連携するGoogleアカウントを選択してアクセスを許可します。
STEP
イベント開始時間のどれくらい前に通知するかなどを設定すればOKです。

こんな感じで通知してくれます。

電車の遅延情報を通知させる方法

2種類の方法を記載していますが、IFTTTで既存のAppletが無いので、どちらもGASを使っています。
前者は、Yahoo!路線情報のメール通知サービスを利用してGmailに飛ばした通知をGASで更にLINEに飛ばしています。
後者は、鉄道遅延情報のjsonという遅延路線をまとめたサービスを利用して任意の遅延情報をGASでLINEに飛ばしています。

LINE Notify + GAS + Yahoo!路線情報

STEP
LINE Notifyのアクセストークンを取得します。

トークン名とトークルームを設定して発行します。

STEP
GASでスクリプトを作成します。
var FindSubject = 'subject:(運行情報) ';
 
function getMail(){
 
  //指定した件名のスレッドを検索して取得 
  var myThreads = GmailApp.search(FindSubject, 0, 10); 
  //スレッドからメールを取得し二次元配列に格納
  var myMessages = GmailApp.getMessagesForThreads(myThreads);
  
 
  for(var i in myMessages){
    for(var j in myMessages[i]){
 
      //スターがないメッセージのみ処理   
      if(!myMessages[i][j].isStarred()){ 
        
        var strDate = myMessages[i][j].getDate();
        var strSubject = myMessages[i][j].getSubject();
        var strMessage = myMessages[i][j].getPlainBody().slice(0,100);
        
        //LINEにメッセージを送信
        sendLine(strDate,strSubject,strMessage);
 
        //処理済みのメッセージをスターをつける
        myMessages[i][j].star(); 
      }
    }
  }
}
 
function sendLine(strDate,strSubject,strMessage){
   
  //Lineに送信するためのトークン
  var strToken = "●●●";
  var options =
   {
     "method"  : "post",
     "payload" : "message=" + strDate + strSubject + strMessage,
     "headers" : {"Authorization" : "Bearer "+ strToken}
 
   };
 
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

LINE Notifyアクセストークンを差し替えて下さい。
キーワードは運行情報、抜粋数100字にしていますが適宜変更されて下さい。

STEP
GASのトリガーを設定します。

設定例

実行する関数を選択:getMail
実行するデプロイを選択:Head
イベントのソースを選択:時間主導型
時間ベースのトリガーのタイプを選択:分ベースのタイマー
時間の間隔を選択:5分おき

こんな感じで通知してくれます。

参考サイト様

LINE Notify + GAS + 鉄道遅延情報のjson

STEP
LINE Notifyのアクセストークンを取得します。

トークン名とトークルームを設定して発行します。

STEP
GASでスクリプトを作成します。
遅延情報は鉄道遅延情報のjson様から取得します。
// 発行された LINE Notify アクセストークン
var LINE_TOKEN = "●●●";

// 鉄道遅延情報を受け取りたい鉄道路線が Json 内にあればLINE通知する
function line_information() {
 
 var json = JSON.parse(
   UrlFetchApp.fetch(
     "https://tetsudo.rti-giken.jp/free/delay.json"
   ).getContentText()
 );
 
 // 鉄道路線名
 //https://rti-giken.jp/fhc/api/train_tetsudo/にアクセスして路線名を参照
 var lineName = "●●●";
 for (var i = 0; i < json.length; i++) {
   if (json[i]["name"] === lineName) {
     message = lineName + "が遅延しています";
     
     var options = {
       method: "post",
       payload: "message=" + message,
       headers: {
       Authorization: "Bearer " + LINE_TOKEN
     }
     };
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
 }
}
}

対象路線とLINE Notifyアクセストークンを差し替えて下さい。

STEP
GASのトリガーを設定します。

朝通知させる設定例

実行する関数を選択:line_information
実行するデプロイを選択:Head
イベントのソースを選択:時間主導型
時間ベースのトリガーのタイプを選択:日付ベースのタイマー
時間の間隔を選択:午前6時~7時

夕方も設定したい場合は新たにトリガーを設定すればOKです。

こんな感じで通知してくれます。

参考サイト様

各種サイトの更新情報を通知させる方法

LINE Notify + IFTTT

STEP
IFTTTで「更新情報」などと検索して任意のAppletを選びます。
今回は「好きなサイトの更新情報をLINEで受け取る」を選びました。
STEP
RSSのURLを指定すればOKです。
各サイトに設置されているRSS/feedアイコンなどから分かります。

例えば

こんな感じで通知してくれます。

Twitterで特定のツイートを通知させる方法

LINE Notify + IFTTT

STEP
IFTTTで「twitter search」などと検索して任意のAppletを選びます。
今回は「Twitter Search to LINE Notify Channel」を選びました。
STEP
IFTTTを認証させて、検索したい単語を設定すればOKです。

こんな感じで通知してくれます。

0

コメント

コメントする

目次
閉じる