Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Javascript 满足条件后If语句不停止_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 满足条件后If语句不停止

Javascript 满足条件后If语句不停止,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我用这段代码对照我在谷歌表单中的列表检查电子邮件的发件人 假设我的列表有两列(姓名和电子邮件) 列名称,第一行:“谷歌” 列电子邮件,第一行:“一些。one@google.com“ 然后我收到一封来自“一些”的电子邮件。one@google.com“ 我的脚本将接收这封电子邮件,检查我的列表中是否有它,如果有,它将得到这个人的名字,“谷歌” 如果我收到某人的电子邮件。else@google.com虽然,我仍然希望它的名字是“谷歌”,但现在基于域名 但是,如果我添加第二行name=“Google2

我用这段代码对照我在谷歌表单中的列表检查电子邮件的发件人

假设我的列表有两列(姓名和电子邮件)

列名称,第一行:“谷歌”
列电子邮件,第一行:“一些。one@google.com“

然后我收到一封来自“一些”的电子邮件。one@google.com“
我的脚本将接收这封电子邮件,检查我的列表中是否有它,如果有,它将得到这个人的名字,“谷歌”

如果我收到某人的电子邮件。else@google.com虽然,我仍然希望它的名字是“谷歌”,但现在基于域名

但是,如果我添加第二行name=“Google2”和email=“random”,脚本运行良好。email@google.com,我收到一封来自“某人”的电子邮件。one@google.com“,它将按我的列表中的状态找到它,但它将继续到else if位,在那里它也将按域找到它

按域搜索时会找到Google和Google 2。我希望它在第一次满足条件后停止,并以谷歌为例。现在,它继续运行,并取得最后一个结果,谷歌2。我认为if/else语句在第一次满足条件时停止

如果它通过“If”并满足条件,我希望它停止,而不是继续执行“elseif”并返回它找到的最后一个结果

for(设j=2;j
正如Jeremy Thille所说,您可以使用break

for (let j = 2; j < lastRowMySpreadsheet; j++) {
  let emailInMyList = mySpreadsheet.getRange(j, 2).getValue();
  let domainInMyList = mySpreadsheet.getRange(j, 3).getValue();

  if (emailFromGmail === emailInMyList) {
    sourceName = mySpreadsheet.getRange(j, 1).getValue();

    break; // Terminate after first find

  } else if (onlyEmailDomain === domainInMyList) {
    sourceName = mySpreadsheet.getRange(j, 1).getValue();
    /// do other stuff too

    break; // If first find is a priorite DO NOT put break here;
  }
}

您需要使用
break中断循环你想让它停止运行是什么意思?您是指循环本身还是仅指if-else语句,然后继续下一行?我在我这边尝试了这个概念,如果满足了声明条件,就不会进行else。谢谢Jeremy。出于某种原因,我认为我不能使用“加油中断”。我现在觉得自己很愚蠢!嗨,Jason,在我的例子中,它继续运行,并将在检查if和else if条件后返回最后一个结果。我给if条件添加了一个中断,现在它运行得很好。
var rows = SpreadsheetApp.getDataRange().getValues();

var emailMatched = rows.filter(row => row[1] == emailFromGmail);
var domainMatched = rows.filter(row => row[2] == domainInMyList);

Logger.log(emailMatched) // All matched email rows
Logger.log(domainMatched) // All matched domain rows

Logger.log(emailMatched[0][0]) // First source name matched
Logger.log(domainMatched[0][0]) // First domain name matched