讲师中心 微信公众号
AI工具推荐 视频效率加速

如何为 Google 表单设置密码验证以限制提交权限

浅枫大大_3563

浅枫大大_3563

发布时间:2026-02-12 19:49:33

|

744人浏览过

|

来源于php中文网

原创

如何为 Google 表单设置密码验证以限制提交权限

google 表单原生不支持密码或白名单访问控制,但可通过 apps script 在提交后自动校验预设验证码,并即时屏蔽无效响应,实现“伪密码门禁”效果。本文详解实现逻辑、修复常见脚本错误,并提供健壮可部署的完整方案。

在实际调研场景中,常需确保仅授权人员(如内部员工、受邀嘉宾)可提交表单,而非公开开放。虽然 Google 表单本身不提供前端密码验证、IP 限制或实时白名单拦截功能(即无法在用户点击“提交”前阻止非法访问),但我们可以通过 Google Apps Script 的 onFormSubmit 触发器,在响应提交后的毫秒级时间内完成校验,并自动作废无效提交——这是一种被广泛验证、稳定可靠的“后置准入控制”方案。

✅ 正确实现逻辑与关键修复点

您原始脚本存在多个关键问题,导致无法正常工作:

Maverick Google Video Url Analysis
Maverick Google Video Url Analysis

将公开视频URL直接发送给Google Gemini模型进行分析。当Codex需要总结视频、回答视频内容问题或其他用途时使用。

下载
  • ❌ e.response 在 onFormSubmit 触发器中不可用(该事件对象仅含 e.values, e.namedValues, e.source, e.authMode 等字段,不包含响应实例);
  • ❌ form.setAcceptingResponses(false) 会全局关闭整个表单,影响所有用户,而非仅拒绝当前提交;
  • ❌ 未处理空值、大小写敏感、首尾空格等常见校验陷阱;
  • ❌ 缺少错误日志与幂等保护,易因重复触发导致误关表单。

以下是修复后的生产就绪版脚本:

function onFormSubmit(e) {
  // 1. 获取表单和响应数据
  const form = FormApp.getActiveForm();
  const namedValues = e.namedValues; // { "验证码": ["ABC123"], "姓名": ["张三"] }

  // 2. 提取验证码(假设题目标签为"验证码",请按实际修改)
  const codeInput = (namedValues["验证码"] || [null])[0];
  if (!codeInput || typeof codeInput !== 'string') {
    console.warn("⚠️ 未检测到有效验证码字段,跳过校验");
    return;
  }
  const submittedCode = codeInput.trim().toUpperCase(); // 统一转大写并去空格

  // 3. 读取白名单代码(推荐:使用缓存 + 防错读取)
  const sheetUrl = 'YOUR_GOOGLE_SHEET_URL'; // 替换为您的表格链接
  try {
    const ss = SpreadsheetApp.openByUrl(sheetUrl);
    const codeSheet = ss.getSheetByName('Sheet1') || ss.getSheets()[0];
    const codeRange = codeSheet.getRange('A2:A'); // 建议从 A2 开始(A1 为标题),避免空行干扰
    const codes = codeRange.getValues()
      .flat()
      .filter(String) // 移除空单元格
      .map(c => String(c).trim().toUpperCase());

    // 4. 校验通过则保留,否则标记为“已拒绝”并隐藏响应
    if (!codes.includes(submittedCode)) {
      // ⚠️ 关键:不关闭表单!而是删除/归档该响应
      const responseId = e.responseId;
      const allResponses = form.getResponses();
      const targetResponse = allResponses.find(r => r.getId() === responseId);
      if (targetResponse) {
        form.deleteResponse(responseId); // 彻底移除无效响应(不可恢复)
        console.info(`✅ 已删除非法提交(ID: ${responseId},验证码: ${submittedCode})`);
      }
      return;
    }
    console.info(`✅ 验证码校验通过: ${submittedCode}`);
  } catch (err) {
    console.error("❌ 白名单读取失败:", err.toString());
    // 可选:发送告警邮件或记录到日志表
  }
}

? 部署步骤(务必按顺序操作)

  1. 在您的 Google 表单中 → 点击右上角「⁝」→ 「编辑表单脚本」(将打开 Apps Script 编辑器);
  2. 粘贴上方脚本,将 YOUR_GOOGLE_SHEET_URL 替换为您存放验证码的 Sheet 链接;
  3. 确认验证码题目标签名:脚本中 namedValues["验证码"] 的 "验证码" 必须与表单中该题目的精确标题文字一致(区分中英文标点);
  4. 保存项目 → 点击左上角「部署」→ 「新建部署」→ 选择触发器类型为:
    ▶️ onFormSubmit(事件类型:From form → On form submit);
  5. 授权运行权限(首次部署时需授权 https://www.googleapis.com/auth/forms.currentonly 和 https://www.googleapis.com/auth/spreadsheets.readonly)。

⚠️ 重要注意事项

  • 隐私与合规:被删除的响应无法恢复,且不会出现在任何导出文件中,符合 GDPR/《个人信息保护法》对“无效数据及时清除”的要求;
  • 性能优化:白名单建议控制在 5,000 行以内;若代码量极大,可改用 PropertiesService 缓存校验集(减少 Sheet I/O);
  • 防暴力尝试:Google 表单本身无频率限制,如需增强防护,可在 Sheet 中添加“使用次数”列,配合脚本实现一次性验证码;
  • 替代方案对比:
    • ✅ 推荐:本方案零第三方依赖、完全可控、免费;
    • ⚠️ 插件/外链工具(如 FormLimiter)仅能限提交次数或时间,无法做白名单校验;
    • ❌ 不推荐用“隐藏题+跳转逻辑”伪装密码——前端可被审查元素绕过,毫无安全性。

通过以上配置,您即可在不改变表单外观的前提下,构建一道轻量、可靠、合规的访问防线。所有未持有效验证码的提交将被静默丢弃,而合法用户全程无感知——这才是面向生产环境的专业实践。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5390

2024.08.16

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

15833

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

413

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

308

2025.12.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

303

2026.03.06

宝塔面板Nginx性能优化与高并发配置实践
宝塔面板Nginx性能优化与高并发配置实践

本专题围绕宝塔环境下的 Nginx 优化展开,深入讲解缓存策略、连接数调优、Gzip 压缩、静态资源加速及反向代理配置。帮助用户提升网站访问速度与并发处理能力。

716

2026.03.25

宝塔面板数据库管理与MySQL性能优化实践
宝塔面板数据库管理与MySQL性能优化实践

本专题围绕宝塔面板中的数据库管理功能展开,系统讲解 MySQL 安装配置、数据库创建与权限管理、慢查询分析及性能优化方法。内容涵盖索引优化、连接数调优、缓存机制配置以及数据库备份策略。通过实操讲解,帮助开发者提升数据库运行效率与稳定性。

225

2026.04.07

C++运算符基础入门
C++运算符基础入门

本专题详细讲解了C++运算符的类型、语法与使用方法,涵盖算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符及其他特殊运算符,并通过代码示例解析优先级与结合性。

0

2026.10.09

PixPix官网入口合集
PixPix官网入口合集

本专题汇总了PixPix官网在线使用入口及平台功能详解,涵盖文生图、图生图、AI图片编辑、AI视频创作等核心能力,并整理了AI爆款图片复刻、商品套图、详情页生成、视频变清晰与去水印等电商专项工具的使用教程。同时收录了PixPix MCP接入Codex、Claude Code等主流Agent的操作指南,助您一站式完成AI图片与视频创作。

0

2026.10.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn