Google Apps Script: given a regular email (e.g. backup results), archive old copies
// Configuration data | |
// Each config should have the following keys: | |
// * age_min: maps to 'older_than:' in gmail query terms | |
// * age_max: maps to 'newer_than:' in gmail query terms | |
// * query: freeform gmail query terms to match against | |
// | |
// The age_min/age_max values don't need to exist, given the freeform query value, | |
// but age_min forces you to think about how frequent the emails are, and age_max | |
// forces you to not search for every single email tha matches the query | |
// | |
// TODO: | |
// * Add a per-config flag that skips the archiving if there's only one matching thread (so the most recent matching email always stays in Inbox) | |
var configs = [ | |
{ age_min:"14d", age_max:"90d", query:"subject:(Benedict's Newsletter)" }, | |
{ age_min:"7d", age_max:"30d", query:"from:hello@visualping.io subject:gnubert" }, | |
{ age_min:"1d", age_max:"7d", query:"subject:(Nightly clone to Thunderbay4 Successfully)" }, | |
{ age_min:"1d", age_max:"7d", query:"from:Amazon subject:(Arriving today)" } | |
]; | |
function processInbox() { | |
for (var config_key in configs) { | |
var config = configs[config_key]; | |
Logger.log("Processing query: " + config["query"]); | |
var threads = GmailApp.search("in:inbox " + config["query"] + " newer_than:" + config["age_max"] + " older_than:" + config["age_min"]); | |
for (var thread_key in threads) { | |
var thread = threads[thread_key]; | |
Logger.log(" Archiving: " + thread.getFirstMessageSubject()); | |
thread.markRead(); | |
thread.moveToArchive(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment