Javascript 获取匹配值的电子表格行

Javascript 获取匹配值的电子表格行,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我是谷歌应用程序脚本的新手&我正在尝试为电子表格制作一个脚本,在这里我可以得到匹配值的范围。但是没有像.getRow()或.getRange()之类的单元格值函数,因为它是一个字符串值。这是我的密码 function getInfo() { var ss1 = sheet1.getSheetByName("Sheet1"); var ss2 = sheet2.getSheetByName("Rates"); var getCountry = ss1.getRange(ss1.getLastRow

我是谷歌应用程序脚本的新手&我正在尝试为电子表格制作一个脚本,在这里我可以得到匹配值的范围。但是没有像
.getRow()
.getRange()
之类的单元格值函数,因为它是一个字符串值。这是我的密码

function getInfo() {
var ss1 = sheet1.getSheetByName("Sheet1");
var ss2 = sheet2.getSheetByName("Rates");
var getCountry = ss1.getRange(ss1.getLastRow(), 11).getValue();
var countryRange = ss2.getRange(2, 1, ss2.getLastRow(), 1).getValues();
var getZone = 0;

for (var i = 0; i < countryRange.length; i++) {
    if (countryRange[i] == getCountry) {
        var getrow_cr = countryRange[i].getRow();    //.getRow() doesn't apply here for string value
        getZone = ss2.getRange(getrow_cr + 1, 2).getValue();
    }
}
Logger.log(getZone);
}
函数getInfo(){ var ss1=sheet1.getSheetByName(“sheet1”); var ss2=sheet2.getSheetByName(“费率”); var getCountry=ss1.getRange(ss1.getLastRow(),11.getValue(); var countryRange=ss2.getRange(2,1,ss2.getLastRow(),1.getValues(); var-getZone=0; 对于(变量i=0;i
如何获取匹配字符串的行,以便在匹配的单元格值旁边获取单元格值?

您的循环变量
I
从0开始,在您的情况下,它相当于第2行。为了保持清晰,您可以使用命名变量跟踪第一行数据:

var firstrow = 2;
然后,当您找到匹配项时,它所在的电子表格行是
i+firstrow

更新代码:

function getInfo() {
  var ss1 = sheet1.getSheetByName("Sheet1");
  var ss2 = sheet2.getSheetByName("Rates");
  var getCountry = ss1.getRange(ss1.getLastRow(), 11).getValue();
  var firstrow = 2;
  var countryRange = ss2.getRange(firstrow, 1, ss2.getLastRow(), 1).getValues();
  var getZone = 0;

  for (var i = 0; i < countryRange.length; i++) {
    if (countryRange[i][0] == getCountry) {
      var getrow_cr = i + firstrow;
      getZone = ss2.getRange(getrow_cr, 2).getValue();
      break;  // Found what we needed; exit loop
    }
  }
  Logger.log(getZone);
}
函数getInfo(){ var ss1=sheet1.getSheetByName(“sheet1”); var ss2=sheet2.getSheetByName(“费率”); var getCountry=ss1.getRange(ss1.getLastRow(),11.getValue(); var firstrow=2; var countryRange=ss2.getRange(第一行,1,ss2.getLastRow(),1.getValues(); var-getZone=0; 对于(变量i=0;i
由于
countryRange
是一个二维数组,每行有一个元素,因此引用行
i
中的值的正确方法是
countryRange[i][0]
。如果您只是比较
countryRange[i]
,那么您依赖于JavaScript解释器将“行”强制转换为字符串对象。

您能提供更多上下文吗?你只需要在一行中搜索一个字符串吗?@kabirobarai,不。我得到了我需要的字符串,但我需要字符串匹配的范围。谢谢。但是我的日志中的
getZone
仍然得到了0.0。好的,我调试了它,并且
getZone
在循环中收到了正确的值,但是由于某种原因,它没有显示在日志中。知道为什么会这样吗?和你一样,同时我也找到了确切的
break
解决方案。谢谢你,伙计!:)成功匹配后循环继续的事实在这里并不重要,因为
getZone
仅在匹配时才被触摸。然而,
中断
会更有效率。@Sinoscras I也正准备这么说:p