I finally got around to writing some code – turns out its super easy, there’s something called script.google.com, and you Resources|Advanced Google Resources and add the Gmail resource, and then you can write functions to prune your inbox arbitrarily:
function prunePromotions() { var response = Gmail.Users.Messages.list('me',{'q':'label:promotions', 'includeSpamTrash':false}); if (response && response.messages && response.messages.length > 0) { // messages seem to come in from most recent to least recent Logger.log('inspecting '+response.messages.length+' messages'); var collected = {}; for (var i=0; i < response.messages.length; i++) { var message = response.messages[i]; if (message.id) { var message = Gmail.Users.Messages.get('me',message.id); if (message && message.payload && message.payload.headers && message.payload.headers.length > 0) { for (var j=0; j < message.payload.headers.length; j++) { var header = message.payload.headers[j]; if (header.name=='From') { var from = header.value; if (!collected[from]) collected[from] = []; collected[from].push(message); break; } // if header is from } // for each header } // if message.payload.headers } // if message.id } // every message for(var from in collected) { if (collected[from].length > 1) { for (var i=1; i < collected[from].length; i++) { var message = collected[from][i]; Logger.log('trashing '+message.snippet); Gmail.Users.Messages.trash('me',message.id); } } } } }
Unfortunately, I get a lot of promotions, and this only works on the most recent 100 messages or so, so it might be of limited use in this state. But its a start.