谷歌工作区:使用谷歌应用程序脚本将子组织单元中的所有用户添加到一个组中



我想将子组织单元中的所有用户添加到一个组中。我可以在管理面板中做到这一点,但它一次只显示50个用户。由于我们在每个子OU中都有数千个用户,因此此过程将带来不便。

我的解决方案:我遵循了一个指南(源代码(,并使用谷歌应用程序脚本运行了以下代码,但它根本没有做任何事情。日志显示";执行开始";那么";执行完成";但是没有用户被移动到该组。我怀疑代码中OU的格式有误。这有点棘手,尤其是OU是阿拉伯语(从右到左(。你知道可能出了什么问题吗?

function 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 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 && e.details.message && e.details.message}`)
}
})
})
} else {
Logger.log('No users found.')
}
pageToken = page.nextPageToken
} while (pageToken)
}
}

问题:

您没有执行函数addAllOUUsersToGroup

addAllOUUsersToGroup是在myFunction内部声明的,但它从未被调用。因此,如果执行myFunction,则addAllOUUsersToGroup不会运行。

解决方案:

myFunction中调用addAllOUUsersToGroup。例如:

function myFunction() {
// ...stuff...
function addAllOUUsersToGroup() {
// ...stuff...
}
addAllOUUsersToGroup(); // <== ADD THIS
}

或者,在myFunction之外取函数addAllOUUsersToGroup,直接调用它:

function addAllOUUsersToGroup() { <== THIS IS NOT INSIDE myFunction
// ...stuff...
}

参考:

  • 调用函数

最新更新