1

Я использую встроенный api для написания скриптов в Google Таблицах для отправки некоторых подтверждений бронирования, и в настоящее время мой скрипт ломается, если кто-то заполнил недействительный адрес электронной почты. Я бы хотел, чтобы он просто сохранил некоторые данные в списке гостей, которые не были уведомлены, а затем продолжайте цикл через заказы.Проверка правильности адреса электронной почты в Google Apps Script

Это мой текущий код (упрощенно):

// 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) 

Согласно documentation только два метода на MailApp класса для отправки сообщений электронной почты и не проверяет ежедневную норму - ничего о проверке действительных адресов электронной почты - поэтому я действительно не знаю, какие критерии должны быть выполнены для того, чтобы класс принял запрос и, следовательно, не мог написать процедуру проверки.

+1

Как насчет использования простой электронной почты проверки регулярных выражений? \ b [A-Z0-9 ._% -] + @ [A-Z0-9 .-] + \. [AZ] {2,4} \ b – rkg

+0

@Ravi: Я мог бы сделать что-то подобное, но так как вызов API нарушает недействительный адрес, я очень хотел бы точно узнать, какой критерий должен выполняться электронным письмом, и иметь возможность проверить это заранее ... –

+0

Hmm..so sendEmail выдает определенное исключение, если оно неверный адрес электронной почты? – rkg

ответ

-1

Сохраняйте спокойствие, поймать и войти исключение и продолжить:

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

Эта проблема сейчас старая - все письма, которые мне нужно отправить с этим приложением, уже отправлены. Но если я снова это сделаю, это определенно, как я это сделаю. –

+0

Я думаю, что вы не можете указать тип исключения для уловления в JavaScript – CaptainNemo

+0

Какое исключение вызывает это? Если вы отправляете слишком много писем на недействительные электронные письма, вы будете заблокированы. – User

3

Если вам необходимо проверить адреса электронной почты заранее, создать пустую таблицу в дисковод. Затем запустите функцию ниже, изменив значение переменной testSheet, чтобы указать на созданную электронную таблицу. Функция проведет простой тест регулярных выражений, чтобы поймать неверные адреса, а затем проверить, действительно ли адрес действителен, пытаясь временно добавить его в качестве средства просмотра в электронной таблице. Если адрес может быть добавлен, он должен быть действительным.

function validateEmail(email) { 
    var re = /\[email protected]\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; 
    } 
} 

регулярное выражение из How to validate email address in JavaScript?

Смежные вопросы