如何用Google Apps Script为Google Workspace组织所有用户创建Gmail标签
解决方案:遍历Google Workspace用户批量创建Gmail标签
要实现给组织内所有用户创建指定Gmail标签,需结合Admin Directory API(获取组织用户列表)和已启用的Gmail API,具体实现步骤如下:
1. 启用Admin Directory高级服务
在Google Apps Script编辑器中操作:
- 点击左侧「服务」图标(🔌),找到「Admin Directory」并启用
- 确保你的账号是Google Workspace管理员,拥有访问Directory API的权限
2. 完整实现代码
// 定义需要创建的标签列表(含子标签) const TARGET_LABELS = ["L1","L1/S1","L1/S2","L1/S3","L1/S4"]; // 标签颜色配置(文本色建议用浅色,适配深色背景) const LABEL_COLOR = { backgroundColor: "#662e37", textColor: "#ffffff" }; function batchCreateLabelsForAllUsers() { let pageToken = null; do { // 分页获取组织内用户列表,替换domain为你的Workspace域名 const userList = AdminDirectory.Users.list({ domain: "your-domain.com", maxResults: 100, pageToken: pageToken }); // 遍历处理每个用户 if (userList.users) { userList.users.forEach(user => { const userEmail = user.primaryEmail; console.log(`处理用户:${userEmail}`); createLabelsForUser(userEmail); }); } pageToken = userList.nextPageToken; } while (pageToken); // 循环直到所有用户处理完成 } // 为单个用户创建标签的封装函数 function createLabelsForUser(userId) { TARGET_LABELS.forEach(labelName => { try { // 传入用户邮箱作为Gmail API的userId参数 Gmail.Users.Labels.create({ name: labelName, color: LABEL_COLOR }, userId); console.log(`用户${userId}的标签${labelName}创建成功`); } catch (e) { // 跳过已存在标签或记录错误日志 console.log(`用户${userId}的标签${labelName}处理失败:${e.message}`); } }); }
关键说明
- 用户列表获取:通过
AdminDirectory.Users.list()分页拉取组织用户,避免因用户数量过多导致请求超时 - 用户身份标识:使用用户的主邮箱(
primaryEmail)替代原代码中的"me",作为Gmail API的目标用户ID - 权限要求:脚本需以Workspace管理员身份运行,需授予以下权限:
https://www.googleapis.com/auth/admin.directory.user.readonly(读取用户列表)https://www.googleapis.com/auth/gmail.modify(修改用户Gmail标签)
内容的提问来源于stack exchange,提问作者Ehud
相关产品推荐
相关产品推荐

