请求修改Google Forms脚本:在邮件中嵌入动态PowerShell代码
解决Google Forms邮件添加动态PowerShell AD账户创建代码的问题
我懂你卡在哪了——把表单里的新员工信息自动转换成可用的PowerShell代码塞到邮件末尾,确实需要把变量映射和模板拼接搞对。我帮你把脚本改好了,直接就能用,下面是完整的修改方案:
修改后的完整脚本
function onFormSubmit(e) { var response = e.response; var items = response.getItemResponses(); // 1. 提取表单字段(根据你的表单实际顺序调整索引!) var firstName = items[0].getResponse(); // 假设第一个字段是"名" var lastName = items[1].getResponse(); // 第二个字段是"姓" var email = items[2].getResponse(); // 第三个字段是"工作邮箱" var department = items[3].getResponse();// 第四个字段是"所属部门" // 生成AD账户的SamAccountName(按你们公司规范调整,这里是小写名+姓) var samAccountName = (firstName.toLowerCase() + lastName.toLowerCase()).replace(/\s/g, ""); // 2. 构建邮件主体内容 var emailBody = "### 新员工入职申请信息\n"; emailBody += "- 姓名: " + firstName + " " + lastName + "\n"; emailBody += "- 工作邮箱: " + email + "\n"; emailBody += "- 所属部门: " + department + "\n\n"; // 3. 生成动态PowerShell代码(用模板字符串替换变量) var psCodeTemplate = `# 自动生成的AD账户创建脚本 New-ADUser ` -GivenName "${firstName}" ` -Surname "${lastName}" ` -UserPrincipalName "${email}" ` -SamAccountName "${samAccountName}" ` -Department "${department}" ` -Enabled $true ` -AccountPassword (ConvertTo-SecureString "TempP@ss123" -AsPlainText -Force)`; // 4. 把PowerShell代码追加到邮件末尾,用Markdown代码块格式高亮 emailBody += "---\n"; emailBody += "### 一键创建AD账户的PowerShell代码\n"; emailBody += "```powershell\n"; emailBody += psCodeTemplate + "\n"; emailBody += "```"; // 5. 发送邮件 MailApp.sendEmail({ to: "your-admin-email@yourcompany.com", // 替换成实际管理员邮箱 subject: "新员工申请: " + firstName + " " + lastName, body: emailBody, // 可选:如果要HTML格式(代码更美观),取消下面注释 // htmlBody: emailBody.replace(/\n/g, "<br>").replace(/```powershell([\s\S]*?)```/g, "<pre style='background:#f5f5f5;padding:10px;'>$1</pre>") }); }
关键修改说明
- 字段索引调整:一定要根据你Google表单的字段顺序修改
items[X]的索引,比如如果你的“部门”是第5个字段,就改成items[4].getResponse()(数组从0开始计数)。 - PowerShell模板拼接:用反引号
`包裹的模板字符串可以直接用${变量名}插入动态值,比传统字符串拼接更不容易出错,格式也更清晰。 - 邮件格式优化:用
---分隔正文和代码区,再用```powershell ```把代码包裹成Markdown代码块,收件人一眼就能区分内容,复制代码也方便。 - 安全提示:模板里的密码是硬编码的临时密码,建议改成随机生成逻辑,或者对接公司的密码管理系统,避免安全风险。
后续调整建议
- 如果你们公司的SamAccountName有特定规则(比如首字母+姓、缩写等),直接修改
samAccountName的生成逻辑就行。 - 要是需要添加更多表单字段(比如职位、办公地点),直接在提取字段部分加变量,然后在PowerShell模板里对应添加参数(比如
-Title "${jobTitle}")。
内容的提问来源于stack exchange,提问作者Johan Hård
相关产品推荐
相关产品推荐

