2017-09-12 10:52:18 -04:00
|
|
|
//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){
|
|
|
|
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()
|
2017-12-27 11:19:26 -05:00
|
|
|
var from = threads[i].getMessages()[0].getFrom()
|
|
|
|
d.from = from.replace(/\"|<.*>/g,'')
|
2017-09-12 10:52:18 -04:00
|
|
|
d.date = threads[i].getLastMessageDate()
|
2017-12-27 11:19:26 -05:00
|
|
|
if (from.match(/<(.*)>/)!==null){
|
|
|
|
d.email = from.match(/<(.*)>/)[1]
|
|
|
|
} else {
|
|
|
|
d.email = from
|
|
|
|
}
|
2017-09-12 10:52:18 -04:00
|
|
|
d.uns = null
|
|
|
|
|
|
|
|
var uns = threads[i].getMessages()[0].getRawContent().match(/^list\-unsubscribe:(.|\r\n\s)+<(https?:\/\/[^>]+)>/im);
|
|
|
|
if(uns) {
|
2017-12-18 12:01:02 -05:00
|
|
|
d.uns = uns[uns.length-1]
|
2017-09-12 10:52:18 -04:00
|
|
|
} else {
|
2017-12-27 11:19:26 -05:00
|
|
|
var rex = /.*?<a[^>]*href=["'](https?:\/\/[^"']+)["'][^>]*>(.*?[Uu]nsubscribe.*?)<\/a>.*?/gi
|
|
|
|
body_t = threads[i].getMessages()[0].getBody()
|
|
|
|
while(u = rex.exec(body_t)){
|
|
|
|
Logger.log("regmatch" + u.length)
|
2017-09-12 10:52:18 -04:00
|
|
|
if(u[0].toLowerCase().indexOf('unsubscribe')!==-1){
|
2017-12-22 22:09:42 -05:00
|
|
|
for(var j = u.length-1; j >=0; j--){
|
|
|
|
if(u[j].substring(0,4)=="http"){
|
|
|
|
d.uns=u[j]
|
2017-12-18 12:01:02 -05:00
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(d.uns){
|
|
|
|
break
|
2017-12-27 11:19:26 -05:00
|
|
|
}
|
|
|
|
|
2017-09-12 10:52:18 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
data.push(d)
|
|
|
|
} else {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
2017-12-18 12:01:02 -05:00
|
|
|
|
2017-09-12 10:52:18 -04:00
|
|
|
//run every day to send summary email including emails from last 24 hours
|
|
|
|
function noneroll() {
|
2017-12-27 11:19:26 -05:00
|
|
|
emails = getEmails()
|
|
|
|
if(emails.length > 0) {
|
2017-09-12 10:52:18 -04:00
|
|
|
var date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd');
|
|
|
|
var subject = "Bulk Emails: " + date;
|
2017-12-27 11:19:26 -05:00
|
|
|
var t = HtmlService
|
|
|
|
.createTemplateFromFile('email');
|
|
|
|
t.data = emails;
|
|
|
|
var hB = t.evaluate().getContent();
|
2017-09-12 10:52:18 -04:00
|
|
|
MailApp.sendEmail({
|
|
|
|
to: Session.getActiveUser().getEmail(),
|
|
|
|
subject: subject,
|
|
|
|
htmlBody: hB
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|