Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 定义多个变量并与OR运算符进行比较_Google Apps Script - Fatal编程技术网

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

Google apps script 定义多个变量并与OR运算符进行比较,google-apps-script,Google Apps Script,我试图查看由B2、B3、B4、B5到B99定义的名称列表,并将其与另一个集合名称(walkname)进行比较。如果在列表中找到walkname,则该名称将被评估为true,除浏览器弹出外,不会发生任何事情。如果计算结果为false,则新名称将添加到最后一行。下面的代码可以工作,但我不想定义B99。同时使用| |的最快方法是什么 var B2 = sstracker.getRange('B2').getValue(); var B3 = sstracker.getRange('B3').getVa

我试图查看由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');}
for(var i=0;i
您只需使用:

函数包含(a,obj){
对于(变量i=0;i

编辑:复制并粘贴contains函数

我通常使用字符串函数来防止由于大小写差异而导致的错误

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

我最终使用了contains公式,但在45分钟左右的时间里遇到了问题。我必须将===更改为==才能使其正常工作。根据这里的另一篇文章,当两个字符串具有相同的字符序列、相同的长度以及在相应位置具有相同的字符时,如果它们严格相等,则===为真我比较的es是相同的,至少它们在非计算机术语中看起来是相同的。我一改为==它就工作了。你能解释一下吗?可能是
getValue()的返回类型
或者walkname的类型不是字符串?请参阅,以了解两者之间的差异示例。感谢您的回答。我最终使用了下面的另一个答案。确定大小写不是问题是修复代码的下一步,因此我将使用您的部分答案。