LoginSignup
1
2

More than 3 years have passed since last update.

GoogleAppsScript[gas]+slackで電車の遅延情報を受け取る

Last updated at Posted at 2019-09-14

はじめに

GoogleAppsScriptを使い始めてまだ日が浅いですが、超絶便利だったので投稿します。

目的

自動でslackに通勤で使う電車の運行状況の通知を受け取る

準備

実装

コーディングStart!

// その日の7:30にトリガーを設定
function setTrigger() {
  var triggerDay = new Date();
  triggerDay.setHours(7);
  triggerDay.setMinutes(30);
  ScriptApp.newTrigger("slackPost").timeBased().at(triggerDay).create();
}

//その日のトリガーを削除する
function deleteTrigger() {
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() == "main") {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

function slackPost() {
  try {
  deleteTrigger();
  var url = "https://tetsudo.rti-giken.jp/free/delay.json";
  var toSlackUrl = "Incomng WebhooksでコピーしたURL";
  var currentDate = new Date();
  var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'MM/dd HH:mm');

  var response = UrlFetchApp.fetch(url);
  var trainData = JSON.parse(response.getContentText());
  var message = "\n" + "◆関東遅延情報 " + date + "\n" +"━─━─━─━─━─━─━─━"+ "\n" +"*◯平常運転です*" + "\n"+"━─━─━─━─━─━─━─━";
    for each(var obj in trainData) {
      if (obj.name == "通勤で使う電車名(鉄道情報のjsonで確認してください)") {
        message = "\n" + "◆関東遅延情報 " + date + "\n" +"━─━─━─━─━─━─━─━"+ "\n" + "*△"+ obj.company  + "*:*" +obj.name +"*"+ "\n"+"━─━─━─━─━─━─━─━";
      }
    }
    postMessage(message, toSlackUrl);
}catch(e){
  Logger.log("実行エラー" + e);
  postMessage("◆Script実行エラーです。");
}
}

function postMessage(message, hookPoint){
  try {
    var payload = {
      "text": message,
    }
    var options = {
      "method": "POST",
      "payload": JSON.stringify(payload),
      "headers": {
        "Content-type": "application/json",
      }
    }
    var response = UrlFetchApp.fetch(hookPoint, options);

    if (response.getResponseCode() == 200) {
      return response;
    }
    return false;
  }catch(e){
    Logger.log("実行エラー" + e)
    postMessage("◆Script実行エラーです。");
  }

トリガーについて

私の場合、7:30に通知が欲しいので、それより前の時間帯(午前6時〜7時)でsetTriggerを実行して、slackPost()を実行する設定にしています
スクリーンショット 2019-09-14 17.08.36.png
スクリーンショット 2019-09-14 17.08.48.png

実際の画面

スクリーンショット 2019-09-15 12.47.46.png

1
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
1
2