You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Forms中验证输入ID是否存在于Google Sheet列中?

Google表单ID合法性预验证实现方案

由于TextValidationBuilder本身不支持直接读取外部表格数据,你可以通过以下两种方式实现ID验证需求:

方法1:预加载ID列表到表单验证规则(即时验证)

这种方式会把表格中的ID同步到表单的输入验证规则中,用户输入时就能立刻收到合法性反馈,步骤如下:

  1. 打开目标Google表单,点击右上角「扩展程序」→「Apps脚本」进入脚本编辑器。
  2. 替换默认代码为以下内容,注意修改其中的表格ID、表单问题标题、ID所在列参数:
function syncIDValidation() {
  // 替换为你的Google表格ID(URL中/d/后的字符串)
  const spreadsheetId = "你的表格ID";
  // 替换为表单中要求输入ID的问题标题
  const formQuestionTitle = "输入你的ID";
  // 替换为表格中ID所在列(A列=1,B列=2,以此类推)
  const idColumn = 1;

  // 读取表格中的ID数据
  const sheet = SpreadsheetApp.openById(spreadsheetId).getActiveSheet();
  const idRange = sheet.getRange(2, idColumn, sheet.getLastRow() - 1); // 假设第一行是表头
  const idList = idRange.getValues().flat().filter(id => id !== ""); // 提取非空ID

  // 定位表单中的ID输入项
  const form = FormApp.getActiveForm();
  const items = form.getItems();
  let idItem = null;
  for (let item of items) {
    if (item.getTitle() === formQuestionTitle) {
      idItem = item.asTextItem();
      break;
    }
  }

  // 设置验证规则
  if (idItem && idList.length > 0) {
    const validation = FormApp.createTextValidation()
      .requireTextMatchesPattern("^(" + idList.join("|") + ")$")
      .setHelpText("请输入有效的ID,该ID不存在于系统中")
      .build();
    idItem.setValidation(validation);
  }
}
  1. 手动运行一次syncIDValidation函数,完成脚本对表格和表单的访问授权。
  2. 若表格ID会定期更新,点击脚本编辑器左侧「触发器」图标,添加定时触发器(如每日运行),自动同步ID列表到表单验证规则。

方法2:提交后验证并拦截无效提交

如果ID列表实时变动,预加载方式无法及时同步,可通过提交触发事件拦截无效提交:

  1. 在Apps脚本编辑器中添加以下代码,修改对应参数:
function onFormSubmit(e) {
  // 替换为你的Google表格ID
  const spreadsheetId = "你的表格ID";
  // 替换为表单中ID回答的索引(第一个问题为0,依次递增)
  const submittedIdIndex = 0;
  // 替换为表格中ID所在列
  const idColumn = 1;

  // 获取用户提交的ID
  const submittedId = e.response.getItemResponses()[submittedIdIndex].getResponse();

  // 检查ID是否存在于表格
  const sheet = SpreadsheetApp.openById(spreadsheetId).getActiveSheet();
  const idRange = sheet.getRange(2, idColumn, sheet.getLastRow() - 1);
  const idList = idRange.getValues().flat();
  
  if (!idList.includes(submittedId)) {
    // 删除无效提交记录
    e.response.setDestination(FormApp.DestinationType.NONE);
    // 可选:给用户发送验证失败邮件(需用户提交邮箱)
    // const userEmail = e.response.getRespondentEmail();
    // MailApp.sendEmail(userEmail, "ID验证失败", "你输入的ID无效,请重新提交。");
    throw new Error("无效ID,提交已被拦截");
  }
}
  1. 添加触发器:点击左侧「触发器」,创建表单提交触发事件,选择onFormSubmit函数,事件类型设为「表单提交」。

注意事项

  • 方法1为即时验证,用户输入错误ID无法提交,但需定期同步ID列表;
  • 方法2为提交后拦截,适合ID实时变化场景,但用户提交后才会收到反馈;
  • 首次运行脚本需完成Google权限授权,按照提示操作即可。

内容的提问来源于stack exchange,提问作者LBrackett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:25:22