所以我希望我的程序在我的谷歌表格的第一列中搜索一个元素,如果找到该元素,则返回相应的行。当我测试此代码时,该元素即使存在也显示它不存在.
function doGet(e){
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1AssaPoFPcazneN44EjE04fE99MxTaPZg5uMsO1Klh4o/edit#gid=0");
var sheet = ss.getSheetByName("Sheet1");
return finds(e,sheet);
}
function doPost(e){
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1AssaPoFPcazneN44EjE04fE99MxTaPZg5uMsO1Klh4o/edit#gid=0");
var sheet = ss.getSheetByName("Sheet1");
return finds(e,sheet);
}
function finds(e,sheet) {
var records = {};
var scannedData = e.parameter.sdata;
var range = sheet.getDataRange().getDisplayValues().map(r => r[0]); // -> get display Data as 1D array - Col A
var data = [];
if(range.includes(scannedData)) { // use includes to see if scannedData is included in the array
var row_scannedData = range.indexOf(scannedData);
var result = sheet.getRange(row_scannedData,1,1,4); //fetches the entire row belonging to the result
data.push(result); //pushes the row in an array
records.items = data;
var finalresult = JSON.stringify(records);
return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
}
return ContentService.createTextOutput("Not Found").setMimeType(ContentService.MimeType.TEXT);
}
您可以使用
TextFinder
来完成此操作。
假设 A 列中只有一个单元格包含您的搜索词:
function searchColumnA(searchTerm) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var aColumn = sheet.getRange("A1:A" + sheeet.getLastRow());
var tf = aColumn.createTextFinder(searchTerm).findAll();
return tf[0].getRow();
}
谢谢!如果有超过 1 个单元格包含搜索词怎么办? 例如,我试图为居住在农村的人们提供特殊福利,而五个人(五行)将在地址栏中包含农村。怎么办呢? 搜索后,我想提取数据并创建一个住在农村的人的列表......我正在尝试这样做,应用程序脚本新手......所以不知道该怎么做