Google Apps 脚本搜索功能需要比较包含数字和字母的字符串

Google Apps Script search function needs to compare strings containing numbers and letters

所以我正在构建一个非常简单的数据库(实际上只是一个小的 in-sheet MVC)来标准化数据存储实践,以便使某些事情自动化。我正在尝试构建一个搜索功能,以便可以编辑数据条目,但我无法比较我的搜索参数,因为它们采用“ABC 1234”格式。我有一种感觉,我对这门语言还不够了解,但这是我的搜索功能;

function search() {

  const searchValue = searchCell.getValue()
  const data = dataWS.getRange("A2:I").getValues()
  data.filter(r => r[8] == searchValue)
  const recordsFound = data.filter(r => r[8] == searchValue)
  if(recordsFound.length == 0) return

  fieldRange.forEach((f,i) => formWS.getRange(f).setValue(recordsFound[0][i+1]))


}

单元格位置和 sheet 位置以及所有内容都是在全球范围内建立的,因此如果您需要此处缺少任何内容,我很乐意提供。

== 和 === 都不起作用,我想我只是在这里缺少一些知识或经验,但我也很难找到我缺少的东西。当你不知道你不知道什么的时候很难。我收到错误“TypeError: Cannot read 属性 '1' of undefined”,它指向 if 比较行。

查找搜索值

function search() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("SheetName");
  const searchValue = sh.getRange("?").getValue();
  const dataWS= ss.getSheetByName("?")
  const data = dataWS.getRange("A2:I" + dataWS.getLastRow()).getValues().filter(r => r[8] == searchValue);//r[8] is column 9
  //I don't know where you're going from here so I'll just logger.log the data
  Logger.log(JSON.stringify(data));
}

使用 textfinder 也很简单

使用文本查找器

function search() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("SheetName");
  const searchValue = sh.getRange("?").getValue();
  const dataWS= ss.getSheetByName("?")
  const data = dataWS.getRange("A2:I" + dataWS.getLastRow()).createTextFinder(searchValue).findAll().map(r => dataWS.getRange(r.getRow(),1,1,dataWS.getLastColumn()).getValues()[0]);
  Logger.log(JSON.stringify(data));
}