Google Apps 脚本:查找列中的元素并返回相应的行

问题描述 投票:0回答:2

所以我希望我的程序在我的谷歌表格的第一列中搜索一个元素,如果找到该元素,则返回相应的行。当我测试此代码时,该元素即使存在也显示它不存在.

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);
} 
javascript google-apps-script google-sheets
2个回答
2
投票

答案:

您可以使用

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();
}

参考资料:


0
投票

谢谢!如果有超过 1 个单元格包含搜索词怎么办? 例如,我试图为居住在农村的人们提供特殊福利,而五个人(五行)将在地址栏中包含农村。怎么办呢? 搜索后,我想提取数据并创建一个住在农村的人的列表......我正在尝试这样做,应用程序脚本新手......所以不知道该怎么做

© www.soinside.com 2019 - 2024. All rights reserved.