指定したWEBサイトの稼働状況を監視するGoogle Apps Scriptです。自分や自社のサイトを監視したいけどお金をかけたくないときにどうぞ。
特にありません。GoogleスプレッドシートとGASで実現できます。
A列に監視対象のURLを入力してください。
サンプルとして当サイトやヤフー、存在しないページや存在しないドメインを入力してみました。
B列以降はスクリプトが結果を書き込んでくれます。
URLの入力が終わったら一度テスト実行してみましょう。
上部のメニューから「WEBサイトの稼働状況をチェックする」を実行します。
B列以降に結果が書き込まれるはずです。
2-3行目は成功、4-5行目は失敗していますね。失敗理由も確認できます。
テストで問題がなければ、自動的に監視をするためにトリガーを登録します。
監視目的なので短めの1分間隔で登録してみます。
しばらく待つと・・・累計OK/NG数が増えていますね。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00072/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('WEBサイトの稼働状況をチェックする', 'check_http_status');
// メニューを画面に追加する
menu.addToUi();
}
function check_http_status() {
// アクティブなスプレッドシート、シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// シートが使用されている範囲を取得
let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
// シートの値を取得する
const values = range.getValues();
// 監視対象分、ループして処理していく
for (let i = 1; i < values.length; i++) {
// 使用する値を格納する
let url = values[i][0]; // URL
let counter_ok = values[i][3]; // 累計OK数
let counter_ng = values[i][4]; // 累計NG数
// 累計OK/NG数が空欄の場合(初回の監視)はゼロをセットする
if (counter_ok == '') {
counter_ok = 0;
}
if (counter_ng == '') {
counter_ng = 0;
}
// サイトにアクセスしたときの返答を格納するための変数を宣言
let response = '';
// 確認結果を格納するための変数を宣言
let result = '';
// URLフェッチでサイトにアクセスする。エラーが出がちなのでtry catchする
try {
response = UrlFetchApp.fetch(url).getResponseCode();
} catch (e) {
response = e.message; // URLフェッチでエラーが発生した場合はエラーメッセージをresponseに入れる
}
// サイトに正常にアクセスできる = HTTPステータスコード:200が返ってくるので、OKと判断。それ以外はエラーメッセージを格納。
if (response == 200) {
result = 'OK';
counter_ok++;
} else {
result = response;
counter_ng++;
}
// 結果を書き込むため、書き込み範囲のrangeオブジェクトを取得
let range = sheet.getRange(i + 1, 2, 1, 4);
// 結果をシートに書き込む
range.setValues([[result, new Date(), counter_ok, counter_ng]]);
}
}