获取匹配值的电子表格行

Get the spreadsheet row for a matched value

本文关键字:电子表格 获取      更新时间:2023-09-26

我是Google Apps Script的新手&我正试图为电子表格制作一个脚本,在那里我可以得到匹配值的范围。但是对于单元格值没有函数比如.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);
}

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

您的循环变量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解释器将"row"强制转换为String对象。