Google脚本按列搜索电子表格,返回行

Hen*_*vid 13 search google-sheets google-apps-script

我试图在运行时找到最好的脚本来完成一项任务.我有一个相当大的电子表格,我需要检查某些已知列中的值,并根据匹配情况返回该行.理想情况下,我想要一个包含返回行的新电子表格.

我已经通过ID打开了电子表格,并且我已经获得了工作表和范围,但不确定搜索特定列的最有效方法,并且不仅仅抓取该值而是整个行.

谢谢,

Ase*_*tam 43

您可以使用以下代码在特定列中进行搜索.代码是自我解释的.

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "Search", functionName: "onSearch"} ];
  ss.addMenu("Commands", menuEntries);    
}

function onSearch()
{
    var searchString = "Test11";
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SheetName"); 
    var column =4; //column Index   
    var columnValues = sheet.getRange(2, column, sheet.getLastRow()).getValues(); //1st is header row
    var searchResult = columnValues.findIndex(searchString); //Row Index - 2

    if(searchResult != -1)
    {
        //searchResult + 2 is row index.
        SpreadsheetApp.getActiveSpreadsheet().setActiveRange(sheet.getRange(searchResult + 2, 1))
    }
}

Array.prototype.findIndex = function(search){
  if(search == "") return false;
  for (var i=0; i<this.length; i++)
    if (this[i] == search) return i;

  return -1;
} 
Run Code Online (Sandbox Code Playgroud)

  • 你能说清楚在哪里找到"findIndex"函数吗?在官方文档中看不到此功能 (2认同)

小智 7

您可能要使用Google Apps脚本textFinder类。

此示例函数将搜索字符串并在警报对话框中显示第一个匹配项的行:

function searchString(){
  var sheet = SpreadsheetApp.getActiveSheet()
  var search_string = "dog"
  var textFinder = sheet.createTextFinder(search_string)
  var search_row = textFinder.findNext().getRow()
  var ui = SpreadsheetApp.getUi();
  ui.alert("search row: " + search_row)
}
Run Code Online (Sandbox Code Playgroud)

  • @Emin 该函数在一定范围内搜索。该范围可以是一列或您想要的任何内容。为该单列创建范围并将“sheet.createTextFinder()”替换为“range.createTextFinder()” (2认同)