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

如何在Google Forms中设置username字段实现同一用户名仅可提交一次

Google表单同用户名重复提交拦截实现方案

Google表单原生没有内置字段重复提交校验能力,你可以通过绑定Google表格+Apps Script脚本的方式实现需求,具体操作步骤如下:

前期配置

  • 先完成基础表单搭建:添加短回答类型的username字段,将该字段设置为必填项
  • 表单编辑页点击右上角「在表格中查看回复」,绑定一个Google表格用于存储所有提交记录,后续所有历史提交的用户名都会存储在这张表格中

编写校验脚本

  • 打开刚绑定的存储回复的Google表格,点击顶部菜单栏「扩展程序」→「Apps Script」进入脚本编辑页面
  • 清空编辑区默认生成的代码,粘贴以下代码,按照注释提示替换成你自己的表单、表格对应参数:
// 必须和表单里的username字段标题完全一致
const USERNAME_FIELD_TITLE = "username";
// 替换为存储提交记录的Google表格ID,可从表格URL中获取
const STORE_SHEET_ID = "替换为你的表格ID";
// 替换为存储提交记录的工作表名称,默认一般为「表单回复 1」
const STORE_SHEET_NAME = "表单回复 1";

function checkDuplicateUsername(e) {
  // 提取当前提交的用户名
  const currentResponse = e.response;
  const allItemResp = currentResponse.getItemResponses();
  let submitName = "";
  for (let i = 0; i < allItemResp.length; i++) {
    if (allItemResp[i].getItem().getTitle() === USERNAME_FIELD_TITLE) {
      submitName = allItemResp[i].getResponse().trim().toLowerCase();
      break;
    }
  }
  // 读取所有历史提交记录
  const sheet = SpreadsheetApp.openById(STORE_SHEET_ID).getSheetByName(STORE_SHEET_NAME);
  const allRecord = sheet.getDataRange().getValues();
  // 定位用户名所在列
  let nameColIndex = -1;
  for (let col = 0; col < allRecord[0].length; col++) {
    if (allRecord[0][col] === USERNAME_FIELD_TITLE) {
      nameColIndex = col;
      break;
    }
  }
  // 遍历查重
  let hasSubmitted = false;
  for (let row = 1; row < allRecord.length; row++) {
    const existName = String(allRecord[row][nameColIndex]).trim().toLowerCase();
    if (existName === submitName) {
      hasSubmitted = true;
      break;
    }
  }
  // 命中重复规则则拦截提交,返回指定提示
  if (hasSubmitted) {
    e.preventDefault();
    throw new Error("You have already submitted");
  }
}

注:上述脚本默认对用户名做前后空格过滤、不区分大小写匹配,如果需要严格大小写匹配,直接删除代码中两处.trim().toLowerCase()即可。

配置触发规则

  • 在Apps Script编辑页左侧点击时钟样式的「触发器」按钮,选择「添加触发器」
  • 按照以下参数配置触发器:
    • 选择要运行的函数:checkDuplicateUsername
    • 选择运行部署:Head
    • 选择事件来源:从表单
    • 选择事件类型:表单提交时
  • 点击保存后按照弹窗提示完成账号权限授权即可,如果授权时弹出「Google未验证此应用」的提示,点击「高级」→「转到对应项目」继续完成授权即可

效果验证

配置完成后,当用户输入已经提交过的username尝试提交时,表单会直接拦截提交操作,在页面上展示You have already submitted的错误提示,重复提交的记录不会写入存储表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:48:21