Google Apps Scriptで電車の運行状況をSlackに通知

2019-03-01

必要な情報は、タイムリーにチェックしたいですよね。前回は、Google Apps Scriptを使って、スプレッドシートと「Slack」を連携し、必要な情報をタイムリーに通知する方法を紹介しました。

今回は、IMPORTXML関数を活用して、電車の運行状況をSlackに通知する方法を紹介します。

ポイント 電車の運行状況を毎日チェックしたい

年に数回起きる電車の大幅な遅れ・運休。先日も私が使用している路線で通勤時間帯に電車が長時間に渡って運休ということがありました。

電車通勤をしている方であれば、電車の運行状況は抑えておきたいもの。

専用のアプリもあるようですが、そのためだけにアプリを入れるのもメンドウということで、電車の運行状況を朝夕の1日2回通知してくれる仕組みを作ってみました。

ポイント 必要な路線の運行状況を取得

今回、データの取得元として、こちらのページを使用しました。

運行情報(JR、私鉄、地下鉄、新幹線)
日本全国(北海道,東北,関東,中部,近畿,中国,四国,九州)で現在発生しているJR・新幹線・私鉄・地下鉄の運行情報や遅延情報、事故、運休、工事情報などを提供しています。

使用している路線のページに行き、こちらの部分のデータを抽出します。

使用するのは、以前紹介した「IMPORTXML関数」です。

GoogleスプレッドシートIMPORTXML関数:プログラム不要Webデータを取得
当ラボでは、誰もが無料で使うことができるGoogleスプレッドシートを使って様々なツールを提供しています。このGoogleスプレッドシートには、ExcelにはないGoogle独自の...

こちらの記事で紹介した方法を参考にxPathを取得します。
このようにスプレッドシート上に電車の運行状況を取得することができました。

ポイント Slackに通知

あとは、前回作成した通知スクリプトでメッセージの内容をこのセルの内容にします。

Google Apps Scriptで通知:Slack編
必要な情報は、タイムリーにチェックしたいですよね。前回は、Google Apps Scriptを使って、スプレッドシートと「LINE」を連携し、必要な情報をタイムリーに通知する方...

通知内容(変数名:honbun)を次の通り変更します。

function unkou() {
  var sheet= SpreadsheetApp.getActive().getSheetByName('通知データ');  //シート名     
  var honbun="運行状況"+"\n"+sheet.getRange(3,1).getValue()+ sheet.getRange(3,2).getValue()

 // payload=データ本体のこと  Slackに送信(post)する内容
  var payload  = {
    'text'      :  honbun,    // 変数のため''はいらない nameは利用しない場合消す
    'channel'   : '@ユーザ名',   //投稿するチャンネル名
    'icon_emoji': ':hedgehog:',   //botのアイコン 
  };
 
  // Slackに送信
  var options = {
    'method'      : 'post',
    'contentType' : 'application/json',
    'payload'     : JSON.stringify(payload), // jsの値をJSON文字列に変換
  };
 
  var url = ' Incoming WebHooksで取得したURL ‘;
  UrlFetchApp.fetch(url, options);
}


ポイント 定期的に通知

あとは、このプログラムを朝・夕定期的に実行するだけです。

Google スプレッドシート:定期的にプログラムを自動実行(GASトリガー機能)
当ラボでは、誰もが無料で使うことができるGoogleスプレッドシートを使って様々なサイトから必要な情報の取得を仕組み化したツールを提供しています。連載で「IMPORTFEE...


↑↑
こんな感じで通知されます。

ポイント まとめ

今回は、これまでに紹介したIMPORTXML関数とSlackへの通知方法を組み合わせて、電車の運行状況を定期的に通知する方法を紹介しました。

運行状況に限らず、定期的に確認したい情報はいろいろあると思います。Googleスプレッドシートを使えば、欲しい情報「だけ」を欲しいタイミングで取得することが可能です。いろいろ工夫してみて下さい。

また、こんなデータを取得できないか?などありましたら、お気軽にお問い合わせ下さい。

Copyright(c) 2016 e-Shikumi-Labo All Rights Reserved.