我一直在寻找可在一定范围内查找文本的脚本。我找到了几个,并针对我的特殊需求修改了此代码。我要做的只是创建一个“登录”类型的系统。用户在一个电子表格上输入电子邮件(E5),然后当我按下按钮时,它将运行脚本以搜索另一个包含电子邮件(A1:A)和子状态为B的电子表格-总范围为(A1:B)。
问题是,仅当电子邮件与单元格A1相匹配时,脚本才起作用。因此,如果(E5)中是Briansmith@hotmail.com或用户键入的内容,而在A1中的另一个电子表格中,则存在Briansmith@hotmail.com-它可以工作。但是,如果我将其移至A5或A1以外的其他位置,它将不再起作用。我感到困惑,为什么for循环不会继续在该列中向下查找匹配的文本。
这是我正在使用的代码:
function loginFunction() {
var s = SpreadsheetApp.getActiveSheet();
//Username is in (E5)
var email = s.getRange("E5").getValue();
var data = SpreadsheetApp.openById('Deleted for privacy').getRange("A1:B")
var value = data.getValues();
for (var i = 0; i < value.length; i++) {
if (value[i][0] === email) {
if (value[i][1] === "yes") {
//Email is located (col A) and sub (col B) is yes
Logger.log('Yes');
return SpreadsheetApp.getUi().alert('Connected!');
} else {
//Email is located (col A) and sub (col B) is no
Logger.log('Not Sub');
return SpreadsheetApp.getUi().alert('No Subscription Found');
}
} else {
Logger.log('False');
return SpreadsheetApp.getUi().alert('Not Connected');
//Email not found
}
}
}
答案 0 :(得分:0)
在所有三个条件检查之后,您正在使用return
。您应该继续循环:
尝试从以下位置进行修改:
} else {
Logger.log('False');
return SpreadsheetApp.getUi().alert('Not Connected');
//Email not found
到
} else if(i==value.length-1){ //if i is the last value
Logger.log('False');
return SpreadsheetApp.getUi().alert('Not Connected');
//Email not found