简体   繁体   中英

Class TextFinder Google Apps Scripts

How can I get the values ​​of a Row within a data range of a Spreadsheet using Google Apps Script TextFinder class, I found a way to locate the index of the row where the data I am looking for is located and then capture the values ​​of that row, but I would like to know how to capture the values ​​or indexes of the rows when the searched data is found more than once in the spreadsheet range

 var spreadsheet = SpreadsheetApp.openByUrl(UrlSpreadSheet); var sheet = spreadsheet.getSheetByName("Data"); var row = sheet.getDataRange().createTextFinder(searchedtext).findNext().getRowIndex() ; var values = sheet.getRange(row+ ":" + row).getValues() //In the previous case it works for me but in my spreadsheet the searched data can be found in more than one row, I have tried to use .findAll () that returns [Range, Range] but managed to know how to capture the values. var row = sheet.getDataRange().createTextFinder(searchedtext).findAll() ; 

Use a for [1] to interate through the array of Ranges [2] you get when using findAll() function [3]:

function textFinder() {
  var spreadsheet = SpreadsheetApp.openByUrl(UrlSpreadSheet); 
  var sheet = spreadsheet.getSheetByName("Data");

  //Get the array of Ranges
  var rows = sheet.getDataRange().createTextFinder(searchedtext).findAll(); 
  for(var i = 0; i<rows.length; i++) {
    //Get each Range to get its row index
    var row = rows[i].getRowIndex();
    //Get values for each row
    var values = sheet.getRange(row+ ":" + row).getValues();
    Logger.log(values)
  }  
}

[1] https://www.w3schools.com/js/js_loop_for.asp

[2] https://developers.google.com/apps-script/reference/spreadsheet/range

[3] https://developers.google.com/apps-script/reference/spreadsheet/text-finder.html#findall

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM