Google Apps 脚本 - IF ELSE 与多个条件结合 AND 和 OR

Bus*_*ild 6 google-sheets google-apps-script

寻求有关如何更好地编写此内容的建议。来源是谷歌表格。我还有另外一些 IF ELSE 语句,因此希望合并代码。

我还想要另一个条件,如果employed == "NO" && school == "NO"和邮政编码与列出的不匹配,它会发送单独的电子邮件。

代码被截断以最好地解决特定问题。

   if (status == "" && postcode == "4518" || postcode == "4519" || postcode == "4550" || postcode == "4551" || postcode == "4552" || postcode == "4575" && employed == "NO" && school == "NO") {

       MailApp.sendEmail(
            // to email 1
       }
       ); 
    } 

   else if (status == "" && postcode == "4556" || postcode == "4557" || postcode == "4558" || postcode == "4564" && employed == "NO" && school == "NO") {

       MailApp.sendEmail(
            // to email 2   
       }
       ); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我可能有第二个数据集,其中包含两列:邮政编码和电子邮件地址。如果发现邮政编码匹配,则会发送到 B 列中列出的电子邮件地址。如果未找到匹配项,employed == "NO" && school == "NO"则会发送后备电子邮件。不知道如何写,也不知道如何开始研究。

Sou*_*ria 1

所以,有几件事 -

  1. 我发现这两种情况都有一些共同的变量;身份就业学校。也许你可以将它们置于默认/主要IF条件下
  2. indexOf在数据数组中引入(参考这个

您可以相应地重构代码,如下所示 -

function myFunction() {

  var postcode = '4558';
  var status = 'whatever';
  var employed = 'foo';
  var school = 'bar';

  var postcode1 = ["4518","4519","4550","4551","4552","4575"];
  var postcode2 = ["4556","4557","4558","4564"];
  if (status == "" && employed == "NO" && school == "NO") {
    if(postcode1.indexOf(postcode) !== -1) {
      Logger.log("email 1");
    } else if (postcode2.indexOf(postcode) !== -1) {
      Logger.log("email 2");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这里,postcode1&postcode2只是两个不同的数据数组,也可以使用通常的电子表格服务来使用。

希望这可以帮助。