diff --git a/noneroll.gs b/noneroll.gs new file mode 100644 index 0000000..8c8cba8 --- /dev/null +++ b/noneroll.gs @@ -0,0 +1,96 @@ +//run every hour to archive any new email from email in sheet +function arch() { + var sheet = SpreadsheetApp.openById('sheetID'); + var range = sheet.getDataRange(); + var values = range.getValues(); + values = [].concat.apply([], values); + //Logger.log(values) + var threads = GmailApp.getInboxThreads(); + var label = GmailApp.getUserLabelByName('zbulk') + for (var i = 0; i < threads.length; i++) { + if(threads[i].isInInbox()){ + var msg = threads[i].getMessages()[0]; + var email = msg.getFrom().replace(/^.+<([^>]+)>$/, "$1"); + if(values.indexOf(email) > -1){ + //Logger.log('here?') + threads[i].addLabel(label); + threads[i].markRead(); + threads[i].moveToArchive(); + } + } + } +} + +//run every day to add any emails added to zbulk folder to sheet +function addEmail() { + var sheet = SpreadsheetApp.openById('sheetID'); + var range = sheet.getDataRange(); + var values = range.getValues(); + values = [].concat.apply([], values); + var label = GmailApp.getUserLabelByName('zbulk') + var threads = label.getThreads(); + for (var i = 0; i < threads.length; i++) { + var msg = threads[i].getMessages()[0]; + var email = msg.getFrom().replace(/^.+<([^>]+)>$/, "$1") + if(values.indexOf(email) < 0){ + sheet.appendRow([email]) + } + } +} + +function getEmails() { + var delayDays = 2 + var maxDate = new Date(); + maxDate.setDate(maxDate.getDate() - delayDays); + var label = GmailApp.getUserLabelByName("zbulk"); + var threads = label.getThreads(); + var data = [] + for (var i = 0; i < threads.length; i++) { + if (threads[i].getLastMessageDate()>maxDate){ + var d = {} + d.subject = threads[i].getFirstMessageSubject() + d.from = threads[i].getMessages()[0].getFrom().replace(/\"|<.*>/g,'') + d.date = threads[i].getLastMessageDate() + d.email = threads[i].getMessages()[0].getFrom().match(/<(.*)>/)[1] + d.uns = null + + var uns = threads[i].getMessages()[0].getRawContent().match(/^list\-unsubscribe:(.|\r\n\s)+<(https?:\/\/[^>]+)>/im); + if(uns) { + d.uns = uns + } else { + + var rex = /.*?]*href=["'](https?:\/\/[^"']+)["'][^>]*>(.*?)<\/a>.*?/gi + while(u = rex.exec(threads[i].getMessages()[0].getBody())){ + if(u[0].toLowerCase().indexOf('unsubscribe')!==-1){ + d.uns=u[1] + break + } + } + } + if(d.uns === null){ + Logger.log(d.subject) + } + data.push(d) + } else { + break + } + } + return data; +} + +//run every day to send summary email including emails from last 24 hours +function noneroll() { + if(getEmails().length > 0) { + var date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd'); + var subject = "Bulk Emails: " + date; + var hB = HtmlService + .createTemplateFromFile('email') + .evaluate().getContent() + MailApp.sendEmail({ + to: Session.getActiveUser().getEmail(), + subject: subject, + htmlBody: hB + }); + //Logger.log(top + ct + end) + } +}