LoginSignup
4
2

More than 1 year has passed since last update.

GASで作る、サイトを監視しSlackに通知する

Last updated at Posted at 2020-12-03

はじめに

1時間に1度サイトの監視行い、サイトがダウンしている場合にSlackに通知が来るGASを作成しました。

とても簡単に作成できて手順としては下記の3STEPです。

  1. サイトを監視するGASを作成
  2. トリガーを利用してGASを定期実行する
  3. 結果をSkackに通知する

順番に説明していきます。

1. サイトを監視するGASを作成

まず、GAS(Google App Script)を開きます。
手順は、「Google Drive」 → 「新規」 → 「その他」 → 「Google App Script」です。

GASを開く

GASが開けたら、下記コードをコピペします。

function main() {
  var url = "監視したいサイトのURL";

  var response = UrlFetchApp.fetch(url, {
    muteHttpExceptions: true // 例外処理を除外している
  });
  var response_code = response.getResponseCode(); //サイトの返答コード。正常時は200。

  if(response_code == 200) {
    Logger.log('正常に動作しています');
  } else {
    Logger.log('サイトが落ちています。')
  };

}

上部のタブから再生ボタンを押すとGASを実行することができます。
*実行する時に権限の許可を求められるので、流れに合わせて許可してください。

スクリーンショット 2020-12-03 14.32.50.png

⌘command + Enterを押すと実行結果のログをみることができます。
ログ

2. トリガーを利用してGASを定期実行する

次は、作成した関数を定期実行していきます。
定期実行にはトリガーを使います。

手順は、「時計マークを押す(再生ボタンの横)」 → 「右下のトリガーの追加」 でトリガーの設定ができます。

設定する際は、「実行する関数を選択」で、コードの関数の名前と同じになっていることを確認ください。(今回の場合はmain()になります。)

トリガー

GASトップのマイトリガーをみて、今設定したトリガーがでてきてたら定期実行の設定完了です。

3. 結果をSkackに通知する

次にSlackとの連携を行います。
今回は「Incoming WebHooks」をいうアプリを使って実装していきます。

「Incoming WebHooks」の導入に関しては、こちらの記事がわかりやすく説明されていたので、こちらを参考にしてください。
GAS超入門⑤ - Slackに通知してみよう

コードの全体像は下記のようになります。

function main() {
  var url = "サイトのURL";

  var slack_url = "SlackでコピーしたURL";
  var user_name = "サイト監視"; //Slackで通知する際の名前
  var icon = ":scream"; // Slackで通知する際の絵文字
  var message = ""; // 通知の文

  var response = UrlFetchApp.fetch(url, {
    muteHttpExceptions: true 
  });
  var response_code = response.getResponseCode();

  // サイトが落ちてる時だけ通知するように200以外がかえってきた時の処理のみにしています
  if(response_code != 200) {
    message = "<!channel> サイトが落ちています";

    // Slackに通知するためにJSONにする
    var jsonData = {
      "username": user_name,
      "icon_emoji": icon,
      "text": message
    };

    var payload = JSON.stringify(jsonData);

   // Slackに通知する際のオプションを指定
    let options = {
      "method": "post",
      "conyentType": "application/json",
      "payload": payload
    };

    // Slackに送る
    UrlFetchApp.fetch(slack_url, options);
  };  

}

終わりに

最近、GASを使っているという声がちらほら上がっているので、少し触ってみたいと思い開発してみました。
触ってみた所感としてはJSのように簡単にかけて、学習コストは低いと感じました。
また、学習コストが低いにもかかわらず、幅広いことをできそうだと感じたので、これから少しずつ触ってみたいと思いました。

参照

サーバーを用意しなくてもプログラムを実行できる無料サービス
【初心者向け】GASを使ってSlackへ自動通知
GAS超入門⑤ - Slackに通知してみよう

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