用于获取Google Apps域中最大数量许可的Google API

Emp*_*yee 6 api google-api google-apps google-apps-script

我有一个Google Apps脚本功能,用于在我们的Google Apps域中为新员工设置帐户.

它做的第一件事是调用Google Admin Settings API并检索currentNumberOfUsersmaximumNumberOfUsers,这样它就可以看到是否有可用的席位(否则使用Admin SDK Directory API创建用户的后续步骤将失败).

直到最近,当我们的域名必须从Postini迁移到Google Vault进行电子邮件归档时,它才能正常运行.

迁移之前,使用管理SDK目录API创建Google Apps用户时,它会将 currentNumberOfUsers增加1,新用户帐户用户将自动访问所有Google Apps服务.

现在迁移后,在创建Google Apps用户时,他们不会自动分配"许可证",因此我修改了我的脚本以使用 Enterprise License Manager API,现在它分配了"Google-Apps-For-Business"许可证.这很好.

但是,currentNumberOfUsers现在与分配的许可证数量不同,并且"Google-Apps-For-Business"只是可用的几种不同类型许可证中的一种.

我可以通过运行以下命令获取当前分配的 "Google-Apps-For-Business"许可证数量:

var currentXml = AdminLicenseManager.LicenseAssignments.listForProductAndSku('Google-Apps', 'Google-Apps-For-Business', 'domain.com', {maxResults: 1000});
    
var current = currentXml.items.toString().match(/\/sku\/Google-Apps-For-Business\/user\//g).length;
Run Code Online (Sandbox Code Playgroud)

但产生的数字与currentNumberOfUsers不同.

我现在真正需要做的就是获得最大数量的拥有"Google-Apps-For-Business"许可证,以便新员工设置脚本可以确定是否有可用的许可证.

我查看了以下API的API参考文档,但是......

Enterprise License Manager API →没有获取最大或可用许可证数量的方法.

Google管理员设置API →不处理许可证,仅处理"用户".

管理员SDK目录API用户资源 →不处理许可证.

Google Apps转销商API →此API似乎符合我的要求,但仅适用于转销商帐户.

我知道我可以将我的新员工设置脚本编程为只有一个try/catch查看它是否能够创建用户并分配许可证,如果不能,则优雅地结束脚本执行,但这似乎不是高效.

此外,旧脚本的一部分是,如果可用的席位少于X个座位,它会通过电子邮件向我发送预订,以便订购更多.我知道我可以编写一个循环,尝试重复创建虚拟用户并为其分配许可证并计算它在失败之前可以执行该操作的次数,然后删除所有虚拟用户,但是,再一次,这根本没有效率.

有任何想法吗?

Sam*_*eld 0

我建议探索GAM,它是一个可以通过命令行访问域管理功能的工具。