試しにWeb監視的なサムシングを作ってみました。
Googleスプレッドシートで新規にシートを作って、下記のような表を手打ちで作ります
| URL | メアド | ステータス | 更新日時 | メールログ |
|---|---|---|---|---|
| http://xxxxxxx/ | xxxx@yyy.com | (空欄) | (空欄) | (空欄) |
表ができたらツール→スクリプトエディタでエディタを開いて下記のようなスクリプトを書きます。
function checkUrl() {
var sheet = SpreadsheetApp.openById("XXXXXXXXXXXXXXXXXXXXX");
var child = sheet.getSheets()[0];
var size = child.getMaxRows();
// 1st row is url
var urlList = child.getRange("A2:A" + size).getValues();
// 2nd row is mail address to alert
var mailList = child.getRange("B2:B" + size ).getValues();
// 3rd row is status
var statusCells = child.getRange("C2:C" + size );
// 4th row is status
var dateCells = child.getRange("D2:D" + size );
// 5th row is log
var logCells = child.getRange("G2:G" + size );
var url = null;
var line = 1;
var time = new Date();
while (url = urlList.shift()){
//trim
url = url.toString().replace(/^\s+|\s+$/g, "");
if(url != ""){
try{
var response = UrlFetchApp.fetch(url);
if(response.getResponseCode() == 200){
statusCells.getCell(line, 1).setValue("OK");
} else {
throw (response.getResponseCode());
}
} catch (e){
statusCells.getCell(line, 1).setValue("Error: " + e.toString().substring(0, 100) + "...");
errorMail(mailList[line - 1], logCells.getCell(line, 1), url, e);
} finally {
dateCells.getCell(line, 1).setValue(time);
}
}
line++;
}
}
function errorMail(mail, logCell, url, error){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var child = sheet.getSheets()[0];
var size = child.getMaxRows();
// 5th row is log
var mailCells = child.getRange("G2:G" + size );
try {
MailApp.sendEmail(mail, "Web Check failed " + url, error);
} catch (e){
logCell.setValue("Error: " + e);
}
}
SpreadsheetApp.openByIdに指定するスプレッドシートのIDは一回下記スクリプトを実行してあげればその場で確認できます。Browser.msgBox(SpreadsheetApp.getActiveSpreadsheet().getId());最後にスクリプトエディタのウィンドウでトリガー→現在のスクリプトのトリガーで
[checkUrl] [Time Driven] [Minutes timer] [every 5 minutes]
とかって設定しておけば5分おきに1列目のURLを参照して200OKが帰ってこなかったら
2列目のメアドにアラートメールが送信されるっぽいです。
ものの30分くらいでできましたのでとりいそぎご報告まで
[追記] デバッグ中に何回かスクリプト実行に失敗しているのですが、今その失敗レポートが
「Google Apps スクリプト cloudbeat.js の失敗のまとめ」という件名のメールで
送信されてきました。なんというかスゴすぎですw
[追記 2011/10/18] スクリプトを毎分実行にして監視URLを5つ程度にしてみたところ、APIの呼び過ぎでエラーになりました^ ^; そらそうか…