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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:20:40