定义多个变量并与OR运算符进行比较

时间:2013-11-29 06:23:52

标签: google-apps-script

我正在尝试查看由B2,B3,B4,B5定义的名称列表,直到B99并与另一个集合名称(walkname)进行比较如果在列表中找到了walkname,则将其评估为true,除了浏览器弹出窗口之外没有任如果将其评估为false,则新名称将添加到最后一行。以下代码有效,但我不想要定义到B99。最快的方法是使用||在同一时间?

var B2 = sstracker.getRange('B2').getValue();
var B3 = sstracker.getRange('B3').getValue();
var B4 = sstracker.getRange('B4').getValue();
var B5 = sstracker.getRange('B5').getValue();

if (walkname == B2 || walkname == B3 || walkname == B4 || walkname == B5)
{Browser.msgBox(true)} 
else {var row1 = sstracker.getRange(sstrackerLastRow + 1, 2, 1, 1).setValue(walkname).setBackground('Red');}

我半知道如何使用以下代码并尝试使用它来执行与上面相同的操作。唯一的问题是,它一次评估一个而不是查看所有实例并使用OR语句。基本上,新名称总是被添加到列表中,除非它是第一个。我是一个NOOB,并意识到可能有一个真正简单的答案,使下面的代码做上面的代码。我搜索了论坛,但我不确定该寻求什么甚至可以获得帮助。请帮忙!当你回答时,尽量保持简单。

for(var i = 0; i < teacherarray.length; i++){
var teachname = teacherarray[i];
  if(teachname == walkname){break}
  else {var row1 = sstracker.getRange(sstrackerLastRow + 1, 2, 1, 1).setValue(walkname).setBackground('Red');}

2 个答案:

答案 0 :(得分:0)

您可以使用contains

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

// ...

if (contains(teacherarray, walkname))
{
  // do something
}
else
{
 // do something else
}

编辑:复制并粘贴包含功能

答案 1 :(得分:0)

我通常使用字符串函数来防止由于upperCase / lowerCase差异导致的错误......

if (teacherarray.toString().toLowerCase().indexOf(walkname.toLowerCase())>-1){
  Logger.log('is already there');
  }else{
  Logger.log('must be created');
}

完整测试:

function test(){
  var walkname = 'XMan';
  var teacherarray = SpreadsheetApp.getActiveSheet().getRange('B1:B').getValues();
  if (teacherarray.toString().toLowerCase().indexOf(walkname.toLowerCase())>-1){
    Logger.log('is already there');
  }else{
    Logger.log('must be created');
  }
}