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));
}
所以我正在构建一个非常简单的数据库(实际上只是一个小的 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));
}