Javascript 为什么我的返回行[0]==userId.matches(userId);不';我什么也不显示?
我正在尝试创建一个按名称搜索产品的工具,但我有一些错误。 具体来说,我有一个谷歌表,有两列,一列是产品名称,另一列是股票编号。 当我使用该工具时,仅当搜索的字符串与包含Google工作表的字符串完全相同时才显示结果,但我希望获得包含表单中引入的字符串的所有结果 这里有我拥有的两个文件的代码:一个用于表单,另一个用于js代码Javascript 为什么我的返回行[0]==userId.matches(userId);不';我什么也不显示?,javascript,string,google-apps-script,Javascript,String,Google Apps Script,我正在尝试创建一个按名称搜索产品的工具,但我有一些错误。 具体来说,我有一个谷歌表,有两列,一列是产品名称,另一列是股票编号。 当我使用该工具时,仅当搜索的字符串与包含Google工作表的字符串完全相同时才显示结果,但我希望获得包含表单中引入的字符串的所有结果 这里有我拥有的两个文件的代码:一个用于表单,另一个用于js代码 var myGoogleSheetURL= “保密”; var myGoogleSheetName=“HIDDENFORSECURITY”; 函数doGet(){ var
var myGoogleSheetURL=
“保密”;
var myGoogleSheetName=“HIDDENFORSECURITY”;
函数doGet(){
var template=HtmlService.createTemplateFromFile('formulario');
返回template.evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
函数接收表单(表单){
var userId=form.userId;
返回搜索数据(userId);
}
函数searchData(用户ID){
var sheet=getSpreadSheet(myGoogleSheetURL,myGoogleSheetName);
var rowsResult=工作表
.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn())
.getValues()
.过滤器(功能(行){
返回行[0]==userId;
});
var firstRow=rowsResult[0];
变量用户={
id:第一行[0],
电子邮件:第一行[1],
电话:第一排[2],
};
var result=JSON.stringify(用户);
返回结果;
}
函数getSpreadSheet(url、sheetName){
var ss=SpreadsheetApp.openByUrl(url);
var sheet=ss.getSheetByName(sheetName);
报税表;
}
股票搜索
:根{
--原色:#4caf50;
}
身体{
文本对齐:居中;
字体系列:“Helvetica”,“Arial”,无衬线;
}
输入{
字体大小:16px;
}
输入[type=“text”]{
边界:无;
边框底部:2px实心变量(--原色);
利润率:10px;
填充:10px;
文本对齐:居中;
}
输入[type=“button”]{
背景色:var(--原色);
边界:无;
颜色:白色;
填充:16px 32px;
文字装饰:无;
利润率:10px 2px;
光标:指针;
}
输入[type=“button”]:禁用{
背景色:#达达达;
}
隐蔽性
函数formSubmit(){
document.getElementById(“divResponse”).innerHTML=“搜索…”;
google.script.run
.withSuccessHandler(onSuccess)
.withFailureHandler(onFailure)
.接收表格(文件表格[0]);
禁用输入();
}
函数onSuccess(响应){
var user=JSON.parse(响应);
document.getElementById(“divResponse”).innerHTML=user.email;
启用输入();
}
函数onFailure(){
//波内门萨杰恩分区
document.getElementById(“divResponse”).innerHTML=“未找到产品”;
启用输入();
}
函数禁用输入(){
document.getElementById(“btnSend”).disabled=true;
document.getElementById(“inputUserId”).disabled=true;
}
函数启用输入(){
document.getElementById(“btnSend”).disabled=false;
document.getElementById(“inputUserId”).disabled=false;
}
函数clearDiv(){
document.getElementById(“divResponse”).innerHTML=“”;
}
答案
正如我在代码中看到的,行[0]是列的第一个值。请记住,该方法返回Object[][]——一个二维值数组
因此,您可能正在比较单元格的错误位置
假设这是您的工作表:
+---+---------+------------+
| | A | B |
|---|---------|------------|
| 1 | userID1 | someValue1 |
|---|---------|------------|
| 2 | userID2 | someValue2 |
|---|---------|------------|
| 3 | userID3 | someValue3 |
|---|---------|------------|
| 4 | userID4 | someValue4 |
+---+---------+------------+
在这种情况下,行[0]的值将分别为userID1、userID2、userID3和userID4。因此,userID参数不是字符串或与范围内的任何值都不匹配
另一方面,如果您有如下所示的图纸:
+---+------------+------------+------------+------------+
| | A | B | C | D |
|---|------------|------------|------------|------------|
| 1 | userID1 | userID2 | userID3 | userID4 |
|---|------------|------------|------------|------------|
| 2 | someValue1 | someValue2 | someValue3 | someValue4 |
+---+------------+------------+------------+------------+
这里,行[0]的值将是userID1和someValue1。这意味着您正在比较不同的值
工具书类
userId.matches(userId)
在您的代码中的任何地方都不存在。嗨,迭戈,谢谢您的简短回复。你有理由,在我最后的评论中,你有最后的js代码更新。我假设你会说西班牙语。如果是这样的话,你可以将你的问题用西班牙语发布到