正在分析字符串以通过Google Apps脚本在字符串中查找电子邮件

Parsing string to find email within string via Google Apps Script

本文关键字:字符串 脚本 Apps 查找 电子邮件 Google      更新时间:2023-09-26

我不是一个新的程序员,而是谷歌应用程序脚本的新手。我正在尝试获取一个字符串,并查找字符串中包含的电子邮件地址。

string="这是我要查找的单元格的正文。正文中有一封电子邮件,类似于john.doe@aol.com在这里";

email=FindEmail(字符串);

MailApp.sendEmail(电子邮件,"完成电子邮件",","这是电子邮件");

我需要建立一个名为FindEmail的函数,但坦率地说,我不知道如何开始。

虽然SO上已经有很多解决方案,但我发现的那些解决方案需要调整,以提供您想要的简单性。

  • 如何在javascript中从字符串中查找电子邮件和姓名
  • Regex用于电子邮件匹配
  • 使用javascript在字符串中查找电子邮件地址
  • 使用JavaScript获取字符串中的所有电子邮件地址
  • 更多

这里有一个由所有其他答案浓缩而成的简单函数——实际上,正则表达式有点过头了,但在许多情况下也可以用于验证。它返回一个地址数组,所以如果你只想要第一个,你应该编码email = findEmails(string)[0]。。。但实际上,在相信这一点之前,你应该先做一些错误检查。

/**
 * Return an array of all email addresses found in input string.
 */
function FindEmails(input) {
  var regex = /(?:[a-z0-9!#$%&'*+'/=?^_`{|}~-]+(?:'.[a-z0-9!#$%&'*+'/=?^_`{|}~-]+)*|"(?:['x01-'x08'x0b'x0c'x0e-'x1f'x21'x23-'x5b'x5d-'x7f]|''['x01-'x09'x0b'x0c'x0e-'x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|'[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:['x01-'x08'x0b'x0c'x0e-'x1f'x21-'x5a'x53-'x7f]|''['x01-'x09'x0b'x0c'x0e-'x7f])+)'])/gm
  var result = input.match(regex);
  return result;
}

一个电子邮件地址解析库"电子邮件地址"已适用于谷歌应用程序脚本。来源是分叉的,可以作为要点。

  • 公开提供的库密钥M26NvEFUvGLQadhq7G3OQmgFzUAA6_aCl
  • 此处提供文档

然而。。。它在你给出的字符串示例中找不到电子邮件地址!它期望包含地址的字符串松散地符合RFC 5322。