Poll function: full
by jessekinsman
JavaScript
var alertAddress = "[email protected]";
var sheetId = "1frYyTPpHozRFLIU2g7s_zXBp4H_LVnOLOzXxFJk-I_5";
function pollFunction(url) {
var resCode = 0;
var res;
try {
res = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
if (res) {
resCode = res.getResponseCode();
}
} catch(error) {
resCode = 404;
Logger.log("Error " + error);
}
return resCode;
}
function startPolling() {
var success = false,
urls = [
{url: "http://www.google.com", code: 200, errorAction: "email", successAction: "log"},
{url: "http://www.yahoo.com/test", code: 200, errorAction: "log", successAction: "log"},
{url: "http://www.bing.com", code: 200, errorAction: "email", successAction: "log"}
];
for (var i = 0; i<urls.length; i+=1) {
if (urls[i].hasOwnProperty("url") && urls[i].url !== "") {
var res = pollFunction(urls[i].url);
Logger.log("Response from url: " + urls[i].url + ", response: " + res);
success = handleResponse(res, urls[i], sheetId);
urls[i].success = success;
}
}
return urls;
}
function handleResponse(res, obj, sheetId) {
var dt = Utilities.formatDate(new Date(), "PST", "yyyy-MM-dd' 'hh:mm:ss a"),
success = false;
if (res == obj.code) {
success = writeToSheet([obj.url, res, dt], "log", sheetId);
} else {
if (obj.errorAction == "email") {
sendMailAlert(obj, res, dt);
success = writeToSheet([obj.url, res, dt], "errors", sheetId);
} else {
success = writeToSheet([obj.url, res, dt], "errors", sheetId);
}
}
return success;
}
function writeToSheet(rowData, sheetName, pollSheetId) {
var sp = SpreadsheetApp.openById(pollSheetId),
sheet = sp.getSheetByName(sheetName);
if (sheet) {
sheet.insertRowBefore(1).getRange(1, 1, 1, rowData.length).setValues([rowData]);
trimLog(sheet);
return true;
} else {
Logger.error("Could not find the sheet: " + sheetName);
}
return false;
}
function sendMailAlert(obj, res, date){
var...