获取匹配值的电子表格行

时间:2015-10-20 16:44:50

标签: javascript google-apps-script google-sheets

我是Google Apps脚本的新手。我正在尝试为电子表格制作一个脚本,我可以在其中获取匹配值的范围。但是像.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);
}

如何获取匹配字符串的行,以便获取匹配的单元格值旁边的单元格值?

1 个答案:

答案 0 :(得分:1)

您的循环变量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);
}

由于countryRange是一个二维数组,每行中有一个元素,因此引用行i中值的正确方法是countryRange[i][0]。如果您只是比较countryRange[i],那么您依靠JavaScript解释器来强制执行&#34;行&#34;进入一个String对象。