我是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);
}
如何获取匹配字符串的行,以便获取匹配的单元格值旁边的单元格值?
答案 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对象。