1

J'utilise l'API intégrée pour l'écriture de scripts sur Google Spreadsheets afin d'envoyer des confirmations de réservation, et actuellement mes interruptions de script si quelqu'un a rempli un e-mail non valide. Je voudrais simplement enregistrer certaines données dans une liste d'invités qui n'ont pas été notifiés, puis passer en revue les réservations.Vérification de la validité d'un e-mail dans Google Apps Script

Ceci est mon code actuel (simplifié):

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

Selon le documentation les deux seules méthodes de la classe MailApp sont d'envoyer des e-mails et vérifier le quota quotidien - rien vérifier les adresses e-mail valides - donc je ne sais pas vraiment quels critères doivent être remplis pour que la classe accepte la requête, et ne peut donc pas écrire une routine de validation.

+1

Que diriez-vous à l'aide d'une simple validation e-mail regex? \ b [A-Z0-9 ._% -] + @ [A-Z0-9 .-] + \. [AZ] {2,4} \ b – rkg

+0

@Ravi: Je pourrais faire quelque chose comme ça, mais depuis l'appel de l'API se brise sur une adresse invalide, j'aimerais beaucoup savoir exactement quel critère l'email doit remplir, et être capable de le vérifier au préalable ... –

+0

Hmm..so ne sendEmail jeter une exception spécifique si c'est un email invalide? – rkg

Répondre

-1

Restez calme, pêche et connectez-vous à l'exception et portent sur:

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

Ce problème est désormais obsolète: tous les e-mails que j'avais besoin d'envoyer avec cette application ont déjà été envoyés. Mais si je dois le faire à nouveau, c'est définitivement comme ça que je le ferai. –

+0

Je pense que vous ne pouvez pas spécifier le type d'exception à attraper en JavaScript – CaptainNemo

+0

Quel genre d'exception cela provoque-t-il? Si vous envoyez trop de courriels à des courriels non valides, vous serez banni. – User

3

Si vous devez valider les adresses e-mail au préalable, créer une feuille vierge dans votre lecteur. Ensuite, exécutez la fonction ci-dessous, en modifiant la variable testSheet pour pointer vers la feuille de calcul que vous avez créée. La fonction effectuera un simple test d'expression régulière pour détecter les adresses mal formées, puis vérifier si l'adresse est réellement valide en tentant de l'ajouter temporairement en tant que visionneuse sur la feuille de calcul. Si l'adresse peut être ajoutée, elle doit être valide.

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; 
    } 
} 

regex de How to validate email address in JavaScript?

Questions connexes