After reading GMail Snooze with Apps Script I thought "Gosh, that's almost what I need to make GMail my go-to TODO list platform." Well, I finally sat down and closed the gap.
var MARK_UNREAD = true;
var MARK_IMPORTANT = true;
var ADD_TODO_LABEL = true;
var TIMEZONE = "EST";
function setup() {
if (ADD_TODO_LABEL) {
GmailApp.createLabel("TODO");
}
}
function reviveTODOs() {
var todayString = Utilities.formatDate(new Date(),
TIMEZONE, "yyyy/MM/dd");
var todaysLabel =
GmailApp.getUserLabelByName(todayString);
var page = null;
// Get threads in "pages" of 100 at a time
while(todaysLabel
&& (!page || page.length == 100)) {
page = todaysLabel.getThreads(0, 100);
if (page.length > 0) {
GmailApp.moveThreadsToInbox(page);
if (MARK_UNREAD) {
GmailApp.markThreadsUnread(page);
}
if (MARK_IMPORTANT) {
GmailApp.markThreadsImportant(page);
}
if (ADD_TODO_LABEL) {
GmailApp.getUserLabelByName("TODO")
.addToThreads(page);
}
}
}
}
Instead of using "Snooze x Days" labels, I use date labels like "2011/08/11" to remind myself to follow up on bills, respond to emails, etc. With this modified version of Corey Goldfeder's script, I don't have to remember to check those labels, they just pop back into my inbox automatically. I had a little problem with the markThreadsImportant call not seeming to work. Don't know what's up with that. But otherwise, it has performed well so far in testing.
Update: Be sure to set the timezone that the script will run in and the timezone used to format date labels to the same timezone. See Using Time-Driven Triggers.
Like this script? Have your own variation? Please share!