【问题标题】:Getting the body of individual emails from gmail to google sheets将单个电子邮件的正文从 gmail 获取到 google 表格
【发布时间】:2019-06-17 21:04:54
【问题描述】:

我对使用 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 分钟一次的计时器触发器运行此代码。我遇到的问题是,每次代码运行时,它都会从线程中的每封电子邮件中提取。我希望它只是从上次运行以来的新电子邮件中提取。任何建议将不胜感激。

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多