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...