Skip to content

Instantly share code, notes, and snippets.

@chrisnolet
Last active May 20, 2018 23:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisnolet/fe06cbb6ddd91fa2fdb9b0435649c9b6 to your computer and use it in GitHub Desktop.
Save chrisnolet/fe06cbb6ddd91fa2fdb9b0435649c9b6 to your computer and use it in GitHub Desktop.
Yesterbox for Gmail (Google Apps Script)
function yesterbox() {
var yesterboxName = "Yesterbox";
var backlogName = "Backlog";
var cutoffHour = 7; // 7am each day
var backlogCutoffDays = 10; // Older than 10 days
var yesterboxLabel = GmailApp.getUserLabelByName(yesterboxName) || GmailApp.createLabel(yesterboxName);
var backlogLabel = GmailApp.getUserLabelByName(backlogName) || GmailApp.createLabel(backlogName);
var yesterboxCutoff = new Date();
var backlogCutoff = new Date();
yesterboxCutoff.setHours(cutoffHour, 0, 0, 0);
backlogCutoff.setHours(cutoffHour, 0, 0, 0);
backlogCutoff.setDate(backlogCutoff.getDate() - backlogCutoffDays);
var yesterboxThreads = GmailApp.getInboxThreads().filter(function(thread) {
return (thread.getLastMessageDate() < yesterboxCutoff && thread.getLastMessageDate() >= backlogCutoff);
});
var backlogThreads = GmailApp.getInboxThreads().filter(function(thread) {
return (thread.getLastMessageDate() < backlogCutoff);
});
var completedYesterboxThreads = yesterboxLabel.getThreads().filter(function(thread) {
return !thread.isInInbox();
});
var completedBacklogThreads = backlogLabel.getThreads().filter(function(thread) {
return !thread.isInInbox();
});
yesterboxLabel.addToThreads(yesterboxThreads);
yesterboxLabel.removeFromThreads(backlogThreads);
yesterboxLabel.removeFromThreads(completedYesterboxThreads);
backlogLabel.addToThreads(backlogThreads);
backlogLabel.removeFromThreads(yesterboxThreads);
backlogLabel.removeFromThreads(completedBacklogThreads);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment