能否创建Google Form实现姓氏与身份证号匹配Google Sheets查询并反馈结果?
Google Form + Google Sheets 实现匹配验证方案
完全可以实现你需要的功能,具体步骤如下:
1. 准备数据库表格
- 创建或打开一个Google Sheets表格,将已有的姓氏和身份证号记录存入其中:比如把姓氏放在A列,身份证号放在B列,表头分别设为
surname和idnumber,将该工作表命名为「数据库」。
2. 创建信息收集表单
- 新建Google Form,添加两个必填短文本问题:
- 第一个问题标题设为「姓氏」;
- 第二个问题标题设为「身份证号」。
3. 关联表单与表格并添加验证脚本
- 在Google Form的「响应」选项卡中,点击「链接到Google表格」,关联到你准备好的数据库表格。
- 打开关联的Sheets表格,点击「扩展程序」→「Apps脚本」进入脚本编辑器。
- 替换默认代码为以下脚本:
function onFormSubmit(e) { // 获取表单提交的姓氏和身份证号(注意:e.values[0]是提交时间,后续索引对应表单问题顺序) const submittedSurname = e.values[1]; const submittedId = e.values[2]; // 读取数据库数据 const dbSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("数据库"); const allData = dbSheet.getDataRange().getValues(); // 查找匹配记录 let isMatched = false; for (let i = 1; i < allData.length; i++) { // 跳过表头行 const dbSurname = allData[i][0]; const dbId = allData[i][1]; if (dbSurname === submittedSurname && dbId === submittedId) { isMatched = true; break; } } // 向提交者发送邮件反馈(需开启表单「收集电子邮件地址」选项) const respondentEmail = e.response.getRespondentEmail(); if (respondentEmail) { const subject = "身份匹配结果"; const content = isMatched ? "您提交的姓氏与身份证号组合已匹配到记录。" : "未找到您提交的姓氏与身份证号组合记录。"; MailApp.sendEmail(respondentEmail, subject, content); } // 在响应表中添加匹配结果标记 const responseSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("表单响应 1"); responseSheet.getRange(e.range.getRow(), responseSheet.getLastColumn() + 1).setValue(isMatched ? "匹配成功" : "匹配失败"); }
- 保存脚本(命名为「FormMatchChecker」),首次运行需完成权限授权。
- 设置触发器:点击脚本编辑器左侧「触发器」→「添加触发器」,配置如下:
- 选择函数:
onFormSubmit - 事件源:「从表单提交」
- 事件类型:「表单提交」
- 保存触发器。
- 选择函数:
4. 可选:无邮件的反馈方式
如果不需要邮件通知,可在表单的「设置」→「演示」→「确认消息」中设置通用提示,但无法动态显示匹配结果;若要动态展示,需结合脚本将结果同步到表单确认页面(需额外编写前端交互代码,复杂度较高)。
内容的提问来源于stack exchange,提问作者Paolo Zuccaro
相关产品推荐
相关产品推荐

