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

如何通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:12:57