Find Emails in Gmail that are Awaiting a Reply

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();
}