This Google Script scans the Sent Items folder of your Gmail mailbox and creates a list of messages that are still awaiting a reply from the recipient.
It looks at the sender’s address of the last message in a Gmail thread that is older than 7 days and, if it is different from the email address of the user running the Google Script, logs that message.
/* Credit: https://gist.github.com/cjbarber */
function label_waiting_for_reply() {
// Get the gmail address of the current user
var emailAddress = Session.getEffectiveUser().getEmail();
var EMAIL_REGEX = /[a-zA-Z0-9\._\-]+@[a-zA-Z0-9\.\-]+\.[a-z\.A-Z]+/g;
// Check if the Gmail label exists, else create it
var label = GmailApp.getUserLabelByName('[Waiting For]')
? GmailApp.getUserLabelByName('[Waiting For]')
: GmailApp.createLabel('[Waiting For]');
// Find Gmail Sent Items that are older than a week
var d = new Date();
d.setDate(d.getDate() - 7);
var dateString = d.getFullYear() + '/' + (d.getMonth() + 1) + '/' + d.getDate();
threads = GmailApp.search('in:sent after:' + dateString);
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
// Find the senders email address of the last message in the Gmail thread
var lastMessage = thread.getMessages()[thread.getMessageCount() - 1];
lastMessageSender = lastMessage.getFrom().match(EMAIL_REGEX)[0];
// If the sender's email address is the same as the user, reply not received
if (lastMessageSender == emailAddress && thread.getMessageCount() == 1) {
thread.addLabel(label);
Logger.log(lastMessageSender);
}
}
}
// Publish this Google Script as a web app
function doGet(e) {
label_waiting_for_reply();
}