如何修改Google Apps Script实现双列匹配搜索,匹配成功返回整行数据
修改后的Google Apps Script实现方案
第一步:调整前端Index.html表单
你需要在原有表单中新增密码输入项,示例表单结构如下:
<form id="searchForm"> <div> <label>用户ID:</label> <input type="text" name="searchtext" required> </div> <div> <label>密码:</label> <input type="password" name="password" required> </div> <button type="submit">查询</button> </form>
第二步:修改后端GAS代码
完整修改后的代码如下:
function doGet() { return HtmlService.createTemplateFromFile('Index') .evaluate() .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); } /* PROCESS FORM */ function processForm(formObject){ var result = ""; // 仅当用户ID和密码都输入时才执行搜索 if(formObject.searchtext && formObject.password){ result = search(formObject.searchtext, formObject.password); } return result; } //SEARCH FOR MATCHED CONTENTS function search(userId, inputPwd){ var spreadsheetIds = ['Workbook1','Workbook1']; // 第二个工作簿ID有误请自行修改 var dataRages = ['Sheet1!A2:K','Sheet2!A2:K']; var ar = []; const userIdCol = 0; // A列对应存储用户ID const pwdCol = 1; // B列对应存储密码 spreadsheetIds.forEach((spreadsheetId, i) => { var data = Sheets.Spreadsheets.Values.get(spreadsheetId, dataRages[i]).values; data.forEach(function(f) { // 仅用户ID和密码同时匹配时才返回对应行 if (f[userIdCol] == userId && f[pwdCol] == inputPwd) { ar.push(f); } }); }); return ar; }
改动说明
- 调整了
processForm函数的校验逻辑,同时读取表单提交的用户ID和密码两个参数 - 调整了
search函数的入参与匹配规则,从原来仅匹配A列用户ID,改为同时校验A列用户ID、B列密码与输入值完全一致 - 注意:当前方案为明文传输和存储密码,仅适合内部低安全需求场景使用,生产环境建议对密码做哈希加密后再存储校验
内容的提问来源于stack exchange,提问作者Vanny
相关产品推荐
相关产品推荐

