我正在尝试查看由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');}
答案 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');
}
}