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

Google Forms脚本求助:提交后更新Password验证逻辑

解决方案:提交后自动更新Google Form密码(无需RegEx)

核心思路

避开正则表达式,直接使用Google Form文本验证中的**「等于」**规则做密码校验,每次表单提交后生成新密码并替换该规则的校验值。

具体实现代码

function onFormSubmit(e) {
  // 1. 定位密码输入问题(通过标题定位,替换为你的密码问题实际标题)
  const form = FormApp.getActiveForm();
  const passwordQuestionTitle = "请输入考试密码";
  const passwordQuestion = form.getItems().find(item => item.getTitle() === passwordQuestionTitle);
  
  if (!passwordQuestion || passwordQuestion.getType() !== FormApp.ItemType.TEXT) {
    console.error("未找到指定的密码输入问题或问题类型错误");
    return;
  }

  // 2. 生成随机新密码(自定义长度和字符集)
  const newPassword = generateRandomPassword(8);

  // 3. 更新密码问题的验证规则(使用「等于」规则,无需RegEx)
  const textValidation = FormApp.createTextValidation()
    .setHelpText("密码错误,请联系管理员获取最新密码")
    .requireTextEqualTo(newPassword)
    .build();
  
  passwordQuestion.asTextItem().setValidation(textValidation);

  // 可选:记录新密码到日志或指定表格
  console.log("新密码已更新:", newPassword);
  // 若要保存到Sheet,取消下方注释并配置Sheet信息
  // const sheet = SpreadsheetApp.openById("你的Sheet ID").getSheetByName("密码记录");
  // sheet.appendRow([new Date(), newPassword]);
}

// 生成随机密码的辅助函数
function generateRandomPassword(length) {
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  let password = "";
  for (let i = 0; i < length; i++) {
    const randomIndex = Math.floor(Math.random() * chars.length);
    password += chars[randomIndex];
  }
  return password;
}

配置步骤

  1. 打开Google Form关联的脚本编辑器(点击「扩展程序」→「Apps Script」)
  2. 替换代码中passwordQuestionTitle为你表单里密码输入框的实际标题
  3. 设置触发事件:在脚本编辑器中点击「编辑」→「当前项目的触发器」→「添加触发器」,选择:
    • 函数:onFormSubmit
    • 事件源:「表单」
    • 事件类型:「当表单提交时」
  4. 保存并授权脚本权限

关键说明

  • 此方案完全避开正则表达式,采用精确匹配的「等于」验证,逻辑更简单可靠
  • 生成密码的函数可自定义字符集和长度,按需调整
  • 若需要留存密码历史,可取消代码中保存到Sheet的注释并配置对应Sheet信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:12:37