Skip to content

Instantly share code, notes, and snippets.

@TheAnonymous
Created July 4, 2015 07:50
Show Gist options
  • Save TheAnonymous/9480595e497a21cc76c9 to your computer and use it in GitHub Desktop.
Save TheAnonymous/9480595e497a21cc76c9 to your computer and use it in GitHub Desktop.
This is a Google Apps Script to monitor dom elements at a website if they change you will get an email.
function initSheets(sps){
var Emailsheet;
try{
Emailsheet = sps.getSheetByName("emaillist");
} catch(e){
sps.insertSheet("emaillist")
Emailsheet = sps.getSheetByName("emaillist");
Emailsheet.getRange("A1").setValue("examplemail@examplemail.com")
}
var smssheet;
try{
smssheet = sps.getSheetByName("smslist");
}catch(e){
sps.insertSheet("smslist");
smssheet = sps.getSheetByName("smslist");
Emailsheet.getRange("A1").setValue("12345678910")
}
var wwwsheet;
try{
wwwsheet = sps.getSheetByName("wwwlist");
}catch(e){
sps.insertSheet("wwwlist");
wwwsheet = sps.getSheetByName("wwwlist");
}
}
function elementFetcher(url,startstring, endstring) {
if(url != ""){
var doc = UrlFetchApp.fetch(url).getContentText();
var start = doc.search(startstring);
var end = doc.search(endstring);
Logger.log(start);
Logger.log(end);
var data = "";
if((start || end) == -1){
data = "No valid start or end found :("
} else {
data = doc.slice(start, end);
Logger.log(data);
}
if(data.length > 10000){
data = data.slice(0, 5000)
}
return data;
}else {
return "Error!"
}
}
function onOpen(e){
/*
var newsps = SpreadsheetApp.create("Adresslist");
var id = newsps.getId();
var sps = SpreadsheetApp.openById(id);
return sps;
*/
try{
SpreadsheetApp.getUi().createAddonMenu().addItem("Create Webwatcher", "start").addToUi();
}catch(e){
Logger.log(e);
}
}
function sendEmail(sps, subject, body){
var Emailsheet;
try{
Emailsheet = sps.getSheetByName("emaillist");
} catch(e){
sps.insertSheet("emaillist")
Emailsheet = sps.getSheetByName("emaillist");
}
for(var i =1; i < 100; i++){
var r = Emailsheet.getRange(i, 1);
if(r.length < 4){break;}
var data = r.getValue();
Logger.log(data);
GmailApp.sendEmail(data, subject, body)
}
}
function sendSMS(sps, body){
var smssheet;
try{
smssheet = sps.getSheetByName("smslist");
}catch(e){
sps.insertSheet("smslist");
smssheet = sps.getSheetByName("smslist");
}
for(var i =1; i < 100; i++){
var r = smssheet.getRange(i, 1);
var data = r.getValue();
//Must be done!!!!!!!!
}
}
function crawlWebsites(sps){
var wwwsheet;
try{
wwwsheet = sps.getSheetByName("wwwlist");
}catch(e){
sps.insertSheet("wwwlist");
wwwsheet = sps.getSheetByName("wwwlist");
}
for(var i =1; i < 100; i++){
var r = wwwsheet.getRange(i, 1);
var wwwAdress = r.getValue();
if (wwwAdress == ""){
break;
}
r = wwwsheet.getRange(i, 2);
var start = r.getValue();
r = wwwsheet.getRange(i, 3);
var end = r.getValue();
r = wwwsheet.getRange(i, 4);
var cache = r.getValue();
//////Crawling and alert
var tmpData = elementFetcher(wwwAdress, start, end);
if(cache !== tmpData){
r.setValue(tmpData);
sendEmail(sps, "Change on: " + wwwAdress, tmpData);
sendSMS(sps, "Change on: "+ wwwAdress);
}
}
}
function start(){
var sps = SpreadsheetApp.getActive();
initSheets(sps);
crawlWebsites(sps);
}
function onInstall(e) {
onOpen(e);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment