javascript - 从转发的电子邮件中提取电子邮件地址和姓名

标签 javascript csv google-apps-script string-parsing

我正在尝试使用 Google 脚本从我在特定标签下提交的转发电子邮件中提取电子邮件地址和姓名。

电子邮件如下所示:

发件人:A 发送时间:2019 年 9 月 22 日星期日晚上 8:00 至:其他、电子邮件 主题:转发的电子邮件

body

它们已全部转发到此特定收件箱。因此, header 实际上包含我转发的其他电子邮件地址。

我已经对 2000 多封电子邮件进行了排序,现在我想在电子表格中针对每个标签提取发件人(A)的姓名及其电子邮件地址 (person@gmail.com)。最好,我可以将名字和姓氏放在单独的单元格中(例如人员 | A | 电子邮件地址)

到目前为止我的代码如下:

function processInboxToSheet() {

  // Have to get data separate to avoid google app script limit!

  var start = 0;
  var label = GmailApp.getUserLabelByName("LABEL");
  var threads = label.getThreads();

  var sheet = SpreadsheetApp.getActiveSheet();
  var result = [];



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

    var content = messages[0].getPlainBody();

    // implement your own parsing rule inside
    if (content) {
      var tmp;
      tmp = content.match(/From:\n([A-Za-z0-9\s]+)(\r?\n)/);
      var name = (tmp && tmp[1]) ? tmp[1].trim() : 'No name';

      tmp = content.match(/<\n([A-Za-z0-9@.]+)/);
      var email = (tmp && tmp[1]) ? tmp[1].trim() : 'No email';

      sheet.appendRow([name, email]);

      Utilities.sleep(500);
    }
  }
};

我只得到“No name”和“No email”作为输出,所以代码中有些东西不太起作用。我将非常感谢您的帮助。

最佳答案

您正在解析普通正文,它不包含 to 和 from。它仅包含消息正文。该 API 具有方法 getTo()getFrom(),其中包含您要解析的内容。请参阅the API for GmailMessage了解更多详情。

关于javascript - 从转发的电子邮件中提取电子邮件地址和姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195794/

相关文章:

javascript - 当前数字的正则表达式

javascript - 如何知道 AngularJS 中的调用者函数是谁?

javascript - 导航栏上的 Z-index 问题

javascript - React Navigation Bottom TabBar 图标间距

html - 如何使用 native powershell 命令从 html 文件中提取特定表格?

xml - 用于给定 XML 结构的 XSLT(用于 CSV)

python - 仅使用引号而非标题分隔值

google-apps-script - SpreadsheetApp.openById(id) v2 电子表格上的一般错误

google-apps-script - 如何动态引用 Google SpreadSheets 上的多个工作表?

javascript - file.getOwner() 返回 'DriveUser' 值而不是谷歌应用程序脚本中文件的实际所有者