園児ニアのメモ

ただのエンジニア。何でも屋みたいな扱い受けてます。

【GAS】電車遅延情報をツイートする

GoogleAppScript(以下GAS)にて電車遅延の情報をツイートする方法です。

過去記事でGASと連携してTwitter投稿を行う記事を書いてますのでどうぞ
madgenius.hateblo.jp

今回は上の定期ツイートの内容に電車遅延の情報を追加するのみになります。

電車遅延情報を取得してツイート

鉄道遅延情報のjsonを使って電車遅延情報を取得します。
ここがもし使えなくなった場合は各種運行会社のRSSを取得したり、公式Twitterを監視するのも使えます。(RSSなど公式の方が遅延理由もあるので便利ですが今回は簡単な方で...)

以下がソースです。10分毎のタイマーをセットしています。

//10分毎に鉄道遅延情報のjsonを取得して10分以内に更新された遅延情報をツイートする
function TrainDelayTweet() {
    var response = UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json");
    var result = JSON.parse(response.getContentText());
    for(var i = 0; i < result.length; i++) {
        var company = result[i].company; //会社
        if (company == "東京メトロ" || company == "都営地下鉄") {
            var name = result[i].name; //路線
            var date = new Date(Number(result[i].lastupdate_gmt) * 1000); // 最終更新日時
            
            var Nowymdhms = new Date();
            if ((Nowymdhms.getTime()-date.getTime())/1000/60 < 10) {
                var ResultYear = date.getYear();
                var ResultMon = date.getMonth() + 1;
                var ResultDay = date.getDate();
                var ResultHour = date.getHours();
                var ResultMin = date.getMinutes();
                ELETwitter.TwitterSend(name+"("+company+")が遅延しました。\n情報更新日時:"+ResultYear+"/"+ResultMon+"/"+ResultDay+" "+ResultHour+":"+ResultMin);
            }
        }
    }
}

10分毎に遅延情報を取得して更新時間が10分以内だったらツイートします。(しかし、普通に10分ごとに更新とかもあるので同じ路線が何度もツイートされることもある...)

私が都内に住んでいるので「JR九州」などを出さないために運行会社でフィルターをかけています。
ここでは東京メトロ都営地下鉄のみにしています。
JR東日本で山手線などを入れたいのですがJR東日本には東北も含まれますので、「JR東日本の山手線」の時はフィルターをスルーするようにしてやればOKです。

こちらのBotは私のTwitterにて動作確認が可能です。
以下、フィルターをかけていない時のツイートですが...