google apps скрипт условен оператор if

Аз съм сравнително нов в GAS, но се уча бързо. Благодаря предварително за всяка помощ, която можете да предложите по този въпрос!!

Трябва да мога да изпратя имейл до два различни имейл адреса въз основа на първите знаци в полето за моето фамилно име. Така че, ако първият знак на var last е A - L, изпратете имейла до този човек, в противен случай, ако първият знак е M - Z, изпратете до този друг човек. Как бих създал условен оператор if за това? Текущият ми скрипт, който в момента изпраща всички имейли на един и същ адрес, е както следва:

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



Отговори (2)


@JonnyJS е на прав път. Използвах само регулярни изрази. Литералите на Regex са обвити в / / и опциите се появяват след последния /. Обикновено използвам RegexPal, за да тествам регулярни изрази за GAS. Можете да намерите повече информация за JS Regex на MDN. Най-вече test, която използвам по-долу.


Ето регулярния израз, който използвах:

^ Начало на низ

[A-L] Всяка буква A-L

.* Всеки знак, 0 или повече пъти

$ Край на низ

i Опция за нечувствителен към регистъра регулярен израз


Ето един фрагмент, който можете да използвате.

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});
person fooby    schedule 18.07.2013
comment
Благодаря ви много за вашата помощ. Това работи чудесно! И аз оценявам връзката към RegexPal. - person Shawn; 23.07.2013

Не беше много ясен, но се надявам, че разбрах какво имаш предвид.

Решавам го, като използвам две вградени js неща.

  1. срязваме низа до първия последен.
  2. съпоставяме изрязаната част с регулярен израз.

Помислете за преглед на това на JSFIDDLE

нека първо напишем маркирането:

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

сега малко 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.");
    }
});

както можете да видите, аз използвам jquery за разкрасяване на нещата. ако все още имате проблеми, моля, пишете в коментарите.

person JohnnyJS    schedule 07.07.2013
comment
JohnnyJS, благодаря ти за помощта. Изявленията if/else ще помогнат. Сега просто трябва да знам JS, който ще използва e.value последен. Вие ми показахте как да го направя в html форма, но как да направя така, че моята функция да анализира последно e.value и да присвои различен имейл адрес (var email) в зависимост от резултата от условието if/else? С други думи, ако последната променлива започва a-l, тогава var email = [email protected] иначе, ако последната променлива започва m-z, тогава var email = [email protected]. Съжалявам за аматьорския начин да го кажа. Надявам се да е ясно. - person Shawn; 10.07.2013