如何通过Google Sheet Apps Script设置Google Workspace新用户邮箱命名规则?
实现Google Workspace自动创建用户并生成唯一邮箱格式
功能可行性
完全可以实现。借助Google Apps Script的Admin Directory API,你可以自动生成符合first.lastname@domain.org规则的邮箱,且当邮箱重复时自动添加序号后缀(如first.lastname2@domain.org),同时完成Google Workspace用户的创建。
实现步骤与代码示例
1. 启用Admin Directory API
在Apps Script编辑器中:
- 点击顶部菜单栏的「扩展」→「Apps Script」打开脚本编辑器
- 点击左侧菜单栏的「服务」→「添加服务」,找到「Admin Directory」并启用
2. 核心代码实现
以下是完整的脚本代码,包含邮箱生成、用户存在性检查和用户创建逻辑:
// 生成符合规则的唯一邮箱地址 function generateUniqueEmail(firstName, lastName, domain) { // 标准化名字格式:转小写并移除所有空格 const cleanFirstName = firstName.toLowerCase().replace(/\s/g, ''); const cleanLastName = lastName.toLowerCase().replace(/\s/g, ''); let candidateEmail = `${cleanFirstName}.${cleanLastName}@${domain}`; let suffixCounter = 2; // 循环检查邮箱是否已存在,直到找到可用邮箱 while (isUserExisting(candidateEmail)) { candidateEmail = `${cleanFirstName}.${cleanLastName}${suffixCounter}@${domain}`; suffixCounter++; } return candidateEmail; } // 检查指定邮箱对应的用户是否存在 function isUserExisting(email) { try { // 调用Admin Directory API获取用户信息,存在则返回true AdminDirectory.Users.get(email); return true; } catch (error) { // 捕获"用户未找到"的错误,返回false if (error.message.includes("Not Found")) { return false; } // 其他异常直接抛出,便于排查问题 throw error; } } // 从关联的Google Sheet读取数据并创建新用户 function createWorkspaceUsersFromSheet() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const allRows = sheet.getDataRange().getValues(); // 跳过表头行(假设第一行为姓名、姓氏、初始密码等表头) for (let rowIndex = 1; rowIndex < allRows.length; rowIndex++) { const currentRow = allRows[rowIndex]; const firstName = currentRow[0]; // 第一列存储用户名字 const lastName = currentRow[1]; // 第二列存储用户姓氏 const initialPassword = currentRow[2]; // 第三列存储初始密码 const domain = "domain.org"; // 替换为你的Google Workspace域名 // 跳过空数据行 if (!firstName || !lastName || !initialPassword) continue; // 生成唯一邮箱 const uniqueEmail = generateUniqueEmail(firstName, lastName, domain); // 构建用户创建参数 const userData = { primaryEmail: uniqueEmail, name: { givenName: firstName, familyName: lastName }, password: initialPassword, changePasswordAtNextLogin: true // 强制用户首次登录时修改密码 }; try { // 调用API创建用户 AdminDirectory.Users.insert(userData); // 在Sheet第四列标记创建状态为"已完成" sheet.getRange(rowIndex + 1, 4).setValue("已完成"); } catch (error) { // 在Sheet第五列记录错误信息 sheet.getRange(rowIndex + 1, 5).setValue(`创建失败: ${error.message}`); } } // 立即保存Sheet的修改 SpreadsheetApp.flush(); }
3. 关键逻辑说明
- 邮箱标准化:将姓名转换为小写并移除空格,避免因大小写或空格导致的重复问题
- 重复检查机制:通过
isUserExisting函数调用Admin API验证邮箱是否已被使用,若存在则递增序号生成新的候选邮箱 - 用户创建:从Sheet读取用户基础信息,生成唯一邮箱后调用API创建用户,并在Sheet中记录操作结果
4. 触发设置(可选)
若要在Google表单提交后自动执行用户创建:
- 在Apps Script编辑器中点击左侧「触发器」→「添加触发器」
- 选择
createWorkspaceUsersFromSheet函数,触发事件选择「表单提交」
注意事项
- 执行脚本的账号必须拥有Google Workspace的管理员权限,否则无法调用Admin Directory API
- 初始密码建议设置为随机字符串,可通过
Math.random().toString(36).slice(-8)生成随机密码 - 测试阶段可先手动运行函数,确认逻辑无误后再设置自动触发器
内容的提问来源于stack exchange,提问作者Michael Lochtefeld
相关产品推荐
相关产品推荐

