Vor einiger Zeit wurde auf Digital Inspiration (http://www.labnol.org /internet/ website-uptime-monitor/ 21060/) ein Sheet für Google Spreadsheet veröffentlicht um zu überwachen ob eine bestimmte Webseite online ist.

Das Skript, hinter dem Sheet, schreibt den Status, abhängig von der Geschwindigkeit des Triggers, kontinuierlich in das Sheet. Da die Sheets nicht unendlich sind, kommt es nach ca. 19500 Zeilen zu einer Exception.

Daneben gab es noch ein paar weitere Punkte, die ich angepasst habe. Nachfolgend das Skript, im Sheet müssen keine Anpassungen gemacht werden, da die selben Zellen verwendet werden.

[PHP]
/** Monitor your Site’s Uptime **/

/** By Amit Agarwal 26/03/2012 **/
/** http://labnol.org/?p=33232 **/

/** Extended by: DeBugger **/
/** http://www.BugBlog.de **/

function isMyBugBlogDown()
{
var url = SpreadsheetApp.getActiveSheet().getRange(“E3”).getValue();

if (!ScriptProperties.getProperty(“status”)) {
ScriptProperties.setProperty(“status”, 200);
}

var response, error;

try {
response = UrlFetchApp.fetch(url);
} catch(error)
{
insertData(error, -1, “Website down”, 1);
return;
}

var code = response.getResponseCode();

if (code == 200){
insertData(“Up”, code, “Website up”, 0);
} else {
insertData(response.getContent()[0], code, “Website down”, 1);
}
}

function insertData(error, code, msg, mail) {
if (ScriptProperties.getProperty(“status”) == code){
}

var sheet = SpreadsheetApp.getActiveSheet();
var email = sheet.getRange(“E5”).getValue();

/**
/* Sheet is not infinite
var row = sheet.getLastRow() + 1;
**/

var row = sheet.getLastRow();
var lastValue = sheet.getRange(row,3).getValue();

/**
A Warning, if need the data we should care about!
**/
if(row > 19000){
MailApp.sendEmail(email, “Table almost full: ” + row, “Table almost full: ” + row);
}

if(row > 19500){
sheet.deleteRows(8, row);
MailApp.sendEmail(email, “Table cleared! Rows deleted: ” + (row-8), “Table cleared! Rows deleted: ” + (row-8));
row = 8;
}

if(lastValue != code){
row = row + 1;
}

/**
Always Wintertime / Normaltime.
**/

sheet.getRange(row,1).setValue(Utilities.formatDate(new Date(), “GMT+1”, “dd.MM.yyyy HH:mm:ss”));
sheet.getRange(row,2).setValue(error);
sheet.getRange(row,3).setValue(code);

ScriptProperties.setProperty(“status”, code);

if(mail == 1){
MailApp.sendEmail(email, msg, error);
}
}
[/PHP]