从gmail到Google表格获取单个电子邮件的正文

时间:2019-06-17 21:04:54

标签: google-apps-script google-sheets gmail

我真的很不熟悉Google Apps脚本,因此,如果我尝试的操作没有意义或无法实现,请告诉我。

每天我都会收到几封电子邮件,如下所示:

  

您的姓名:名字姓氏

     

电话号码:555 867 5309

     

电子邮件地址:FakeEmail@email.com

     

您需要什么帮助?请求某人制造。

我试图在收到这些电子邮件时将其自动发送到Google表格中的新行。

截至目前,我收到的每封电子邮件都带有标签“ myLabel”。然后运行以下脚本,该脚本是在此处找到的内容的稍作修改的版本:

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

我正在尝试每15分钟使用计时器触发器运行此代码。我遇到的问题是,每次代码运行时,它都会从线程中的每封电子邮件中提取。我希望它只是从上次运行以来的新电子邮件中提取信息。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

为什么在处理完消息后不将其标记为已读?这是我的一个脚本示例。

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