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.