This Google Script sends a daily newsletter containing a summary of your Starred e-mails in Gmail. You can extend it to attach other information like RSS feeds, summary reports, etc.
var LABEL = 'STARRED';
var TOTAL = 10;
function Install() {
ScriptApp.newTrigger('readStarredMessages').timeBased().everyDays(1).create();
}
function readStarredMessages() {
var thread,
subject,
link,
body,
from,
date,
html,
emails,
color,
index = [],
i;
var mySheet = SpreadsheetApp.getActiveSpreadsheet();
emails = GmailApp.search('label:' + LABEL);
var count = emails.length;
if (count == 0) return;
if (count > TOTAL) index = getIndex(TOTAL, 0, count);
else {
for (i = 0; i < count; i++) index.push(i);
}
for (i = 0; i < TOTAL; i++) {
var n = index[i];
if (emails[n]) {
thread = emails[n].getMessages()[0];
subject = thread.getSubject();
body = processHTML(thread.getBody(), 250);
link = thread.getId(); // can also use GetPermalink()
from = thread.getFrom();
date = Utilities.formatDate(thread.getDate(), Session.getTimeZone(), 'MMM dd, yyyy');
if (i % 2 == 0) color = '#f0f0f0';
else color = '#f9f9f9';
html += '<p>On ' + date + ', <i>' + from + '</i> wrote: ';
html += '<strong>' + subject + '</strong><br /><br />';
html += body + " <a href='https://mail.google.com/mail/#all/";
html += link + "'>Click to read »</a></p>";
}
}
html += "<p><a href='" + SpreadsheetApp.getActiveSpreadsheet().getUrl();
html += "'>click here</a> and choose Gmail > unsubscribe.</p> ";
GmailApp.sendEmail(Session.getActiveUser(), emails.length + ' pending messages in Gmail', '', {
htmlBody: html,
});
}
// Pick random messages from the Gmail label
function getIndex(count, min, max) {
var results = [],
index;
while (count > 0) {
randNumber = Math.round(min + Math.random() * (max - min));
if (results.indexOf(randNumber) == -1) {
results.push(randNumber);
count--;
}
}
return results;
}
// Remove HTML tags from the Gmail messages
function processHTML(html, count) {
html = html.replace(/<(?:.|\n)*?>/gm, '');
html = html.replace(/^\s+|\s+$/g, '');
return html.substring(0, count);
}