我是谷歌应用程序脚本的新手,我的 JavaScript 也不是很强,但这似乎都不是问题,因为我的代码在第一次运行时可以工作,但当我尝试再次调用它时,它会失败。
简而言之,我试图拥有一个可以动态查找给定范围内给定文本的函数。虽然看起来可能有一个内置的包可以做到这一点,但我不知道如何实现它。而且该文档对新手没有帮助。
选项 1:实施以下措施:https://developers.google.com/apps-script/reference/spreadsheet/text-finder#findAll() https://developers.google.com/apps-script/reference/spreadsheet/text-finder#findAll()
因为如果我转而创建以下简单的两个函数(选项 2),则无法成功找到该怎么做:
function findIndexRow(range,fText){
for(var i = 0; i<range.length;i++){
for(var j = 0; j<range.length;j++){
if(range[i][j] == fText){
var fTextRow = i+1;
var fTextCol = j+1;
}
}
}
return fTextRow
}
function findIndexCol(range,fText){
for(var i = 0; i<range.length;i++){
for(var j = 0; j<range.length;j++){
if(range[i][j] == fText){
var fTextRow = i+1;
var fTextCol = j+1;
}
}
}
return fTextCol
}
它的范围是我定义的:
var sheet = SpreadsheetApp.openById('the-gsheet-id');
var CurrSheet = sheet.getSheetByName('Sheet1');
var SHTvalues = CurrSheet.getDataRange().getValues();
因此,当我在主代码中调用它一次但第二次返回时,上面的方法有效null
,请帮助了解为什么重新调用相同的函数不起作用。
var text1Row = findIndexRow(SHTvalues,"text1");
var text1Col = findIndexCol(SHTvalues,"text1");
Logger.log(text1Row)
Logger.log(text1Col)
var text2Row = findIndexRow(SHTvalues,"text2");
var text2Col = findIndexCol(SHTvalues,"text2");
Logger.log(text2Col)
Logger.log(text2Row)
我不明白为什么我的日志返回正确的值text1Row
and text1Col
但当第二次调用时text2Row
and text2Col
都返回null