在 Google Apps 脚本中检查电子邮件是否有效

Tom*_*han 4 javascript email-validation google-apps google-apps-script

我正在使用内置 api 针对 Google 电子表格编写脚本来发送一些预订确认,目前如果有人填写了无效的电子邮件,我的脚本就会中断。我希望它只是将一些数据保存到尚未收到通知的客人列表中,然后继续循环浏览预订。

这是我当前的代码(简化):

// The variables email, subject and msg are populated.
// I've tested that using Browser.msgBox(), and the correct column values are
// found and used

// The script breaks here, if an incorrect email address has been filled in
MailApp.sendEmail(email, subject, msg)
Run Code Online (Sandbox Code Playgroud)

根据文档MailApp课程中仅有的两种方法是发送电子邮件和检查每日配额 - 与检查有效电子邮件地址无关 - 所以我真的不知道该课程必须满足哪些标准才能接受请求,并且因此无法编写验证例程。

rem*_*ity 9

如果您需要事先验证电子邮件地址,请在您的驱动器中创建一个空白电子表格。然后,运行下面的函数,将testSheet变量更改为指向您创建的电子表格。该函数将执行一个简单的正则表达式测试以捕获格式错误的地址,然后通过尝试将其临时添加为电子表格中的查看器来检查该地址是否实际有效。如果地址可以添加,它必须是有效的。

function validateEmail(email) {
  var re = /\S+@\S+\.\S+/;
  if (!re.test(email)) {
    return false;
  } else {
    var testSheet = SpreadsheetApp.openById(arbitrarySpreadsheetInYourDrive);
    try {
      testSheet.addViewer(email);
    } catch(e) {
      return false;
    }
    testSheet.removeViewer(email);
    return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

来自如何在 JavaScript 中验证电子邮件地址的正则表达式


Pet*_*ann 6

保持冷静,捕捉并记录异常并继续:

try {
  // do stuff, including send email
  MailApp.sendEmail(email, subject, msg)
} catch(e) {
  Logger.log("Error with email (" + email + "). " + e);
}
Run Code Online (Sandbox Code Playgroud)