mschawacker
mschawacker

Reputation: 23

Getting the body of individual emails from gmail to google sheets

I'm really new at using Google Apps Script, so if what I'm trying doesn't make sense, or just isn't possible please let me know.

Everyday I get several emails that look like the following:

Your Name: FirstName LastName

Phone Number: 555 867 5309

Email Address: [email protected]

What do you need help with? Request someone makes.

I'm attempting to automatically send the body of these emails to a new line in a Google Sheet when they come in.

As of right now I have every email get the label "myLabel" when it comes in. I then run the following script, which is a slightly modified version of something I found here:

    function myFunction() {

      var ss = SpreadsheetApp.getActiveSheet();

      var label = GmailApp.getUserLabelByName("MyLabel");
      var threads = label.getThreads();

      for (var i=0; i<threads.length; i++)
      {
        var messages = threads[i].getMessages();

        for (var j=0; j<messages.length; j++)
        {
         var msg = messages[j].getBody();

          ss.appendRow([msg])
        }
          threads[i].removeLabel(label);
      }
    }

I'm attempting to run this code with a timer trigger every 15 minutes. The issue I've run into is that every time the code runs it pulls from every email in the thread. I would like it to just pull from the emails that are new since the last time it ran. Any advice would be greatly appreciated.

Upvotes: 1

Views: 563

Answers (1)

Jeremy
Jeremy

Reputation: 2338

Why not mark the messages as read when you finish processing them? Here is a sample from one of my scripts.

  var pendingEmailLabel = "MyLabel";
  var threads = GmailApp.getUserLabelByName(pendingEmailLabel).getThreads();
  for (var t = 0; t < threads.length; ++t) {
    var thread = threads[t];
    var messages = thread.getMessages();
    for (var m = 0; m < messages.length; ++m) {
      var message = messages[m];
      if (message.isUnread()) {
          // INSERT YOUR CODE HERE THAT TAKES ACTION ON THE MESSAGE
          message.markRead();
        }
      }
    }
  }

Upvotes: 1

Related Questions