FindAll函数返回时(范围,范围,范围,范围),如何获取a1Notations?

时间:2019-06-30 17:45:16

标签: search google-apps-script google-sheets full-text-search

我正在尝试使用以下代码在Google表格中搜索特定的关键字:

var completeSearch = dataSheetName.createTextFinder(searchTerm).findAll();

当我记录它时,变量返回[Range, Range, Range, Range]. 有没有办法让此关键字每次出现时都返回单元格值?

编辑:我并不是说我需要它来返回单元格VALUES,就像在单元格的内容中一样,而是单元格名称本身,例如(A4)。

1 个答案:

答案 0 :(得分:0)

  • 您要从以下脚本中检索值。
    • var completeSearch = dataSheetName.createTextFinder(searchTerm).findAll();
  • dataSheetName是电子表格中的表格。
    • 关于这一点,我想到了dataSheetName的变量名。
  • 您要使用Google Apps脚本。

如果我的理解是正确的,那么该修改如何?

修改点:

  • findAll()检索的值为[Range, Range,,]。为了从Range检索值,在这种情况下,它使用getValue()getValues
  • 根据您的情况,您可能还需要搜索值的行值。因为每个Range的值都与searchTerm的值相同。因此,在此示例脚本中,将同时检索搜索范围的值和搜索范围行的值。

请认为这只是几个答案之一。

修改后的脚本:

在使用此脚本之前,请设置变量searchTermsheetName

function myFunction() {
  var searchTerm = "sample"; // Please set this.
  var sheetName = "Sheet1"; // Please set this.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheetName = ss.getSheetByName(sheetName);
  var completeSearch = dataSheetName.createTextFinder(searchTerm).findAll();
  for (var i = 0; i < completeSearch.length; i++) {
    var range = completeSearch[i];
    var value = range.getValue();
    var rowValue = dataSheetName.getRange(range.getRow(), 1, 1, dataSheetName.getLastColumn()).getValues();
    Logger.log(value) // Value of the searched range
    Logger.log(rowValue) // Values of the row of searched range
  }
}

注意:

  • 您要在问题中显示脚本的一部分。因此,我补充了其他部分来处理脚本。如果这与您的脚本不同,请对其进行修改。

参考文献:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

编辑:

  • 您要检索通过搜索获得的像元的坐标(a1Notation)。

从您的答复中,我可以像上面那样理解。如果我的理解是正确的,那么该示例脚本如何?

修改后的脚本:

function myFunction() {
  var searchTerm = "sample"; // Please set this.
  var sheetName = "Sheet1"; // Please set this.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheetName = ss.getSheetByName(sheetName);
  var completeSearch = dataSheetName.createTextFinder(searchTerm).findAll();
  for (var i = 0; i < completeSearch.length; i++) {
    var range = completeSearch[i];
    Logger.log(range.getA1Notation())
  }
}

参考: