通过Google Apps脚本解析字符串以查找字符串中的电子邮件

时间:2013-07-30 14:59:21

标签: javascript google-apps-script

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

string =“这是我要看的小区的主体。这个小组在这里有一封电子邮件,比如john.doe@aol.com。”;

email = FindEmail(string);

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

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

2 个答案:

答案 0 :(得分:4)

虽然SO已经有很多解决方案,但我发现这些解决方案需要调整才能提供您所需的简单性。

这是一个简单的函数,从所有其他答案中浓缩而来 - 实际上,正则表达式有点过分,但在很多情况下也可用于验证。它返回一个数组的地址,所以如果你只想要第一个地址,你可以编写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;
}

答案 1 :(得分:1)

电子邮件地址解析库"电子邮件地址"已适用于Google Apps脚本。来源是forked and available as a gist

  • 公开提供,库密钥M26NvEFUvGLQadhq7G3OQmgFzUAA6_aCl。
  • 文档available here

然而......它不会在您提供的字符串示例中找到电子邮件地址!它期望包含地址的字符串松散地符合RFC 5322。