かずきち。の日記

サーバサイドエンジニアのつぶやき

GoogleAppsScriptでサイトの死活管理ツールを作った

サイトがあるかないかをチェックするのはURLにアクセスすればよい

f:id:kazukichi_0914:20210728172252g:plain

でも世界中に18億あるらしいんですよ。
そんなのを一件一件チェックしていたら大変です。

ウェブページがあるかないかはそのウェブページにアクセスするとわかります。
aaa.com aab.com aac.con…などのアドレスが存在するかいちいちチェックしていたら日が暮れます。
そのページがあるかないかをチェックするサクッとスクリプトを書いてみました。

const URL = 'https://a.hatenablog.com/'; // 監視したいサイトのURL
const EMAIL = 'xxxxxxxx@gmail.com'; // エラーを知らせるメールアドレス

function main() {

    if(isUrlDown()) { // サイトが落ちてたとき(メール通知)

        sendMail();

    } else {

        Logger.log('正常に作動しています'); // ログに出力

    }

}

function isUrlDown() {

    const response = UrlFetchApp.fetch(URL, {
        muteHttpExceptions: true // 例外処理はしないようにする
    });

    return (response.getResponseCode() !== 200); // HTTPステータスコードが、「200」以外はエラーとする

}

function sendMail() {

    const dateTime = Utilities.formatDate(new Date(), 'JST', 'yyyy年MM月dd日 HH:mm');

    MailApp.sendEmail({
        to: EMAIL,
        subject: '【サイトダウン】検知しました',
        htmlBody: `
            以下のURLでサイトダウンを検知しました。<hr>
            URL: <a href="${URL}">${URL}</a><br>
            日時: ${dateTime}
        `
    });

}
このスクリプトを実行するとこのサイトが存在するか否かのチェックを返す

f:id:kazukichi_0914:20210728173219g:plain

「当然こんなサイトは存在しないので、以下のURLでサイトダウンを検知しました」と通知が来ます。