3
2

More than 5 years have passed since last update.

西鉄の運行状況を通知してくれるBOTをなぐり書きした

Last updated at Posted at 2017-11-27

WHY?

濃霧の影響で西鉄が遅延するのを駅に着いてから知るのが辛かったので、BOT作った。

HOW?

毎朝西鉄の運行状況のサイトを見て大牟田線の情報があればTypetalkに通知するbotをGASで作った。

SOURCE

ロジックは無理やり文字列で判定した。
'<h3 class="">天神大牟田線(太宰府線・甘木線含む)</h3><p>'があればそのブロックの文字列をTypetalkにポストするだけ。
htmlの取得にはUrlFetchAppのAPIを使った。

var TOKEN = 'YOUR BOT TOKEN';
function postTrafficInfo() {
  var html = UrlFetchApp.fetch("http://jik.nishitetsu.jp/traffic/default.htm").getContentText();
  if (html.indexOf('<h3 class="">天神大牟田線(太宰府線・甘木線含む)</h3><p>') > 0) {
    var infos = '';
    html.split('<h3 class="">天神大牟田線(太宰府線・甘木線含む)</h3><p>').forEach(function(v, i) {
      if (i > 0) {
        var tmp = v.split('</p>')[0].replace(/<br \/>/g, '\n');
        tmp = tmp.replace(/<br\/>/g, '\n');
        tmp = tmp.replace(/<br>/g, '\n');
        infos += tmp + '\n\n';
        Logger.log(tmp);
      }
    });
    postTrafficWithMention('YOUR USER ID', infos);
  }
}

function postTrafficWithMention(mention, message) {
    postSimpleMessage(TOKEN, '32504', mention + '\n' + message);
}

function postSimpleMessage(token, topicId, message) {
  var data = {
    message: message,
  };
  var options = {
    'method'     : 'post',
    'contentType': 'application/x-www-form-urlencoded',
    'payload'    : data
  };
  var url = 'https://typetalk.in' + '/api/v1/topics/' + topicId + '?typetalkToken=' + token;
  var res = UrlFetchApp.fetch(url, options);
}

毎朝6:00〜7:00と18:00〜19:00でスケジューリングしておいた。
上手く動けば大牟田線の情報だけを通知してくれる…はず。
かなりテキトーに書きなぐったので、不具合あればその都度修正していくスタイルで。
西鉄のサイトのhtmlの構造が変わったらたちまち使えなくなるけど、その時はまた対応する。

PREVIEW

こんな感じで投稿される。実際はメンションが着くのでスマホに通知されるはず。
スクリーンショット 2017-11-27 9.57.08.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2