我是谷歌应用程序脚本的新手,我的 JavaScript 也不是很强,但这似乎都不是问题,因为我的代码第一次运行时可以工作,但当我尝试再次调用它时它失败。
我只是想拥有一个可以动态查找给定范围内给定文本的函数。虽然看起来可能有一个内置的包可以做到这一点,但我不知道如何实现它。而且该文档对新手没有帮助。
选项 1:实现以下内容: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
和 text1Col
的正确值,但是当第二次调用时 text2Row
和 text2Col
都返回 null
最佳答案
我相信您的目标如下。
- 您想要从 Google 电子表格的工作表中搜索文本值,并想要检索找到的值的行号和列号。
- 您希望使用 TextFinder 来实现此目的。
对于这个,这个答案怎么样?
示例脚本:
var findText = "text1";
var sheet = SpreadsheetApp.openById('the-gsheet-id');
var CurrSheet = sheet.getSheetByName('Sheet1');
var SHTvalues = CurrSheet.createTextFinder(findText).findAll();
var result = SHTvalues.map(r => ({row: r.getRow(), col: r.getColumn()}));
console.log(result)
注意:
关于
my logs return the correct values for text1Row and text1Col but when it is called a second time the text2Row and text2Col both return null
在您的脚本中,如果有text1
的值和text2
在Sheet1
、text1Row、text1Col、text2Col 和 text2Row 具有值。如果只有text1
的值放入Sheet1
、text1Col 和text2Col 具有值。但 text2Col 和 text2Row 没有值 (null
)。请小心这一点。- 但在本例中,当将`text1 的 2 个值放入单元格“A1”和“A2”时,仅返回“A2”。还请小心这一点。
在此示例脚本中,请启用 V8。
引用文献:
关于javascript - Google App 脚本在电子表格中查找文本并返回位置索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61567840/