1

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

string = "这是我将要查看的单元格的正文。该正文中有一封电子邮件,例如 john.doe@aol.com here。";

电子邮件 = 查找电子邮件(字符串);

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

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

4

2 回答 2

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;
}
于 2013-07-30T16:00:19.730 回答
1

电子邮件地址解析库“电子邮件地址”已针对 Google Apps 脚本进行了调整。Source 是分叉的,可以作为 gist 使用

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

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

于 2014-08-27T02:21:31.573 回答