Google Workspace:用Apps Script批量添加子OU用户到群组失败排查
问题分析与解决方案
核心问题:添加用户的逻辑未被执行
你的代码把addAllOUUsersToGroup嵌套定义在了myFunction内部,但执行myFunction时并没有调用这个内部函数,导致整个添加用户的逻辑完全没运行。这就是日志只有"Execution started"和"Execution completed",没有任何用户操作记录的直接原因。修复步骤
调整函数结构,确保核心逻辑被调用,两种可选方法:
方法一:在myFunction内调用内部函数并调整结构/** * Add all users of an organizational unit (OU) to specific groups * in Google Workspace * * Usage: * Change the OU variable, in a format of /OU/SubOU/SubSubOU. The root OU is represented as / * Change the groupEmails variable, which is a list of group emails. * * © 2021 xFanatical, Inc. * @license MIT * * @since 1.0.0 proof of concept */ const OU = '/كلية الطب/الطلبة/طلبة الدراسات الاولية 2019 - 2020/testing' const groupEmails = ['100gb.limit@uokufa.edu.iq'] function myFunction() { addAllOUUsersToGroup(); } function addAllOUUsersToGroup() { let pageToken let page do { page = AdminDirectory.Users.list({ customer: 'my_customer', maxResults: 100, pageToken, query: `orgUnitPath='${OU}'`, }) let users = page.users if (users) { users.forEach((user) => { groupEmails.forEach((groupEmail) => { try { AdminDirectory.Members.insert({ email: user.primaryEmail, role: 'MEMBER', type: 'USER', }, groupEmail) Logger.log(`Added user [${user.primaryEmail}] to group [${groupEmail}]`) } catch (e) { Logger.log(`Failed to add user [${user.primaryEmail}] to group [${groupEmail}], error: ${e.details?.message || e.message}`) } }) }) } else { Logger.log('No users found.') } pageToken = page.nextPageToken } while (pageToken) }方法二:直接将
addAllOUUsersToGroup作为主函数执行(删除外层的myFunction)阿拉伯语OU路径的潜在问题
若修复函数调用后仍无效果,检查以下两点:- 确认OU路径完全匹配:阿拉伯语是从右到左的语言,手动输入路径容易出现字符顺序错误,建议从Google Workspace管理控制台直接复制OU的完整路径。
- 处理特殊字符:如果路径中未来出现单引号,需要在查询语句中转义,可修改为
query: \orgUnitPath='${OU.replace(/'/g, "\'")}'``。
其他必要检查
- 启用Admin Directory API:在脚本编辑器的「资源>高级Google服务」中找到Admin Directory API并启用。
- 权限验证:运行脚本的账号必须是Google Workspace管理员,拥有管理用户和群组的权限。
内容的提问来源于stack exchange,提问作者Mohammed Kadhim
相关产品推荐
相关产品推荐

