1

Je suis relativement nouveau au GAS mais j'apprends vite. Merci d'avance pour toute aide que vous pouvez offrir à ce sujet !!google apps script conditionnel if instruction

Je dois être en mesure d'envoyer un courriel à deux adresses électroniques différentes en fonction du premier caractère de mon champ de nom. Donc, si le premier caractère de var last est A - L, envoyez l'email à cette personne, sinon, si le premier caractère est M - Z, envoyez-le à cette autre personne. Comment créer une instruction if conditionnelle pour cela? Mon script actuel qui envoie actuellement tous les messages électroniques à la même adresse est la suivante:

function onFormSubmit(e) { 

var timestamp = e.values[0]; 
var last = e.values[3]; 
var first = e.values[4]; 
var employment_status = e.values[5]; 
var unemployed_date = e.values[6]; 
var employment_type = e.values[7]; 
var employer_name = e.values[8]; 
var employer_address = e.values[9]; 
var employment_begin = e.values[10]; 
var comments = e.values[11]; 

var email = "[email protected]"; 
var subject = "Employment Update Received"; 

var message = "<HTML><BODY>" 
+ "<P>Dear " + first + " " + last + "," 
etc. etc. 
+ "</HTML></BODY>"; 

MailApp.sendEmail(email, subject, "", {htmlBody: message}); 
} 

Répondre

0

@JonnyJS est sur la bonne voie. Je n'ai utilisé que des expressions régulières. Les littéraux Regex sont enveloppés dans / / et les options se produisent après la dernière /. J'utilise habituellement RegexPal pour tester les expressions régulières pour GAS. Vous pouvez trouver plus d'informations sur JS Regex sur MDN. Plus particulièrement, la fonction test que j'utilise ci-dessous.


Voici le regex je:

^ mises en chantier de chaîne

[A-L] Toute lettre AL

.* Tout caractère, 0 fois ou plus

$ de fin de chaîne

i Option pour le cas regex insensible


est un extrait pour vous d'utiliser ici.

var last = e.values[3].trim(); // Remove any leading spaces to be safe 
var email = "[email protected]"; 

var reAtoL = /^[A-L].*$/i; 
var reMtoZ = /^[M-Z].*$/i; 

if (reAtoL.test(last)) { 
    email = "[email protected]"; 

} else if (reMtoZ.test(last)) { 
    email = "[email protected]"; 
} 

// If both fail, then it's going to the Catch Other Names 

Mail.sendEmail(email, subject, "", {htmlBody:message}); 
+0

Merci beaucoup pour votre aide. Cela fonctionne très bien! Et j'apprécie le lien vers RegexPal. – Shawn

+0

@Shawn Si cette réponse est correcte, veuillez le marquer ainsi. Merci – fooby

0

Vous ne avez pas été vraiment clair, mais j'espère que je suis ce que vous vouliez dire. Je le résous en utilisant deux trucs js intégrés.

  1. nous coupons la chaîne au premier.
  2. nous associons la partie coupée à l'expression régulière.

Tenez compte voir que sur JSFIDDLE

permet d'écrire le balisage premier:

<form> 
<input name="last" type="text"/></form> 
<br><br> 
<div id="status"> 
</div> 

maintenant un certain JS:

var rel = new RegExp("[a-l A-L]"); 
var rez = new RegExp("[m-z M-Z]"); 
$("form input").on("change",function(e){ 
    vall = $("form input").val().substr(0,1); 
    console.log(vall); 
    if (rel.exec(vall)) { 
     $("#status").text("We Got a winner! the last name starts with letter from a-l"); 
    } 
    else if (rez.exec(vall)) { 
     $("#status").text("Hodey! the last name starts with letter from m-z"); 
    } 
    else { 
     $("#status").text("Well, Nothing cool here."); 
    } 
}); 

comme vous pouvez le voir im en utilisant jquery pour enjoliver les choses. si vous avez encore des problèmes s'il vous plaît écrivez dans les commentaires.

+0

JohnnyJS, merci pour votre aide. Les instructions if/else vont vous aider. Maintenant, j'ai juste besoin de connaître le JS qui utilisera la valeur "last". Vous m'avez montré comment le faire sous forme html, mais comment faire pour que ma fonction analyse la dernière valeur et affecte une autre adresse email (var email) en fonction du résultat de la condition if/else ?En d'autres termes, si var dernier commence a-l, alors var email = [email protected] else si var dernier commence m-z, puis var email = [email protected] Désolé pour la façon amateur de dire ça. J'espère que c'est clair. – Shawn