在Google Sheet App脚本中寻找价值

时间:2018-07-25 19:50:34

标签: google-apps-script google-sheets

我一直在寻找可在一定范围内查找文本的脚本。我找到了几个,并针对我的特殊需求修改了此代码。我要做的只是创建一个“登录”类型的系统。用户在一个电子表格上输入电子邮件(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
    }
  }
}

1 个答案:

答案 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