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)
小智 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)