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