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の構造が変わったらたちまち使えなくなるけど、その時はまた対応する。