Poll functions with handle response
by jessekinsman
JavaScript
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 sheetId = "1brYyTPpHozRFLIU2g7s_gXBp4H_LVnOLOzXxFJk-I_4";
var urls = [
{url: "http://www.google.com", code: 200, errorAction: "email", successAction: "log"},
{url: "http://www.yahoo.com/test", code: 200, errorAction: "email", 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);
handleResponse(res, urls[i], sheetId);
}
}
}
function handleResponse(res, obj, sheetId) {
var dt = Utilities.formatDate(new Date(), "PST", "yyyy-MM-dd' 'hh:mm:ss a");
if (res == obj.code) {
writeToSheet([obj.url, res, dt], "log", sheetId);
} else {
if (obj.errorAction == "email") {
// send e-mail
writeToSheet([obj.url, res, dt], "errors", sheetId);
} else if (obj.errorAction == "log") {
Logger.log("URL: " + obj.url + " returned " + res + " on " + dt);
writeToSheet([obj.url, res, dt], "errors", sheetId);
}
}
}
function writeToSheet(rowData, sheetName, pollSheetId) {
var sp = SpreadsheetApp.openById(pollSheetId);
var sheet = sp.getSheetByName(sheetName);
if (sheet) {
sheet.insertRowBefore(1).getRange(1, 1, 1, rowData.length).setValues([rowData]);
} else {
Logger.error("Could not find the sheet: " + sheetName);
}
}