1

저는 GAS에 상당히 익숙하지만 빠른 학습을합니다. 당신이 이것에 제안 할 수있는 어떤 도움든지에 미리 감사드립니다 !!Google 애플리케이션 스크립트 조건부 if 문

내 성 필드의 첫 번째 문자를 기반으로 두 개의 다른 전자 메일 주소로 전자 메일을 보낼 수 있어야합니다. 따라서 var last의 첫 번째 문자가 A - L이면이 사람에게 전자 메일을 보내고 그렇지 않으면 첫 번째 문자가 M - Z이면이 다른 사람에게 전자 메일을 보냅니다. 이 조건문을 작성하려면 어떻게해야합니까? 현재 모든 이메일을 동일한 주소로 보내는 현재 스크립트는 다음과 같습니다.

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

답변

0

@ JonnyJS가 올바른 길 위에 있습니다. 정규식 만 사용했습니다. 정규식 리터럴은 / /으로 묶여 있으며 마지막으로 / 뒤에 옵션이 있습니다. 보통 RegexPal을 사용하여 GAS의 정규 표현식을 테스트합니다. JS Regex에 대한 자세한 내용은 MDN에서 확인할 수 있습니다. 가장 중요한 점은 아래에서 사용하는 test 기능입니다. 문자열

[A-L]

^ 시작하는 편지 AL

.* 모든 문자, 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}); 
+0

도움을 주셔서 대단히 감사합니다. 이것은 훌륭하게 작동합니다! RegexPal에 대한 링크에 감사드립니다. – Shawn

+0

@Shawn이 답변이 올바른 경우 표시하시기 바랍니다. 감사 – fooby

0

당신은 정말 분명하지만 나는 당신이 원하는 것을 얻었 으면합니다.

두 개의 js 구성 요소를 사용하여 문제를 해결했습니다.

  1. 문자열을 첫 번째 후자로 잘라 냈습니다.
  2. 잘라낸 부분과 정규 표현식이 일치합니다.

    <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를 사용하여 메신저를 볼 수

JSFIDDLE

에 그 볼을 고려 먼저 마크 업을 작성할 수 있습니다. 문제가 계속되면 의견을 남겨주세요.

+0

JohnnyJS, 협조 해 주셔서 감사합니다. if/else 문이 도움이됩니다. 이제 e.value "last"를 사용할 JS를 알아야합니다. html 형식으로하는 방법을 보여 줬지만 어떻게하면 내 함수가 e.value "last"를 분석하고 if/else 조건의 결과에 따라 다른 전자 메일 주소 (var 전자 메일)를 할당하도록 만들 수 있습니까? ?즉, var last가 -l을 시작하면 var email = [email protected]이고, var가 마지막으로 m-z를 시작하면 var email = [email protected]이됩니다. 이 말을 아마추어 방식으로 유감스럽게 생각합니다. 나는 그것이 분명하기를 바란다. – Shawn