使用Google Apps脚本将域用户添加到组织单位

时间:2012-06-03 16:45:25

标签: provisioning google-apps-script

我正在尝试将用户(新创建的)添加到我的Google Apps域中的特定组织单位,但我似乎无法在此找到任何文档或示例。这甚至可能吗?也许通过使用普通的REST调用?

我的代码到目前为止创建用户:

var user = UserManager.createUser(userName, firstName, lastName, "welcome").setChangePasswordAtNextLogin(true);

现在我想将用户附加到特定的组织单位,并使其成为某些组的成员(但这是我正在深入研究的另一个问题)。

非常感谢任何帮助!

此致

基斯。

3 个答案:

答案 0 :(得分:3)

UserManager服务不支持组织单位,但您可以手动构建请求。

以下Apps脚本代码将用户添加到OU。参数是customerId,要添加到组织单位的用户的电子邮件地址以及组织单位路径:

function addUserToOU(customerId, email, ou) {
  var oauthConfig = UrlFetchApp.addOAuthService("google");

  var scope = "https://apps-apis.google.com/a/feeds/policies/";
  oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);         
  oauthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");

  oauthConfig.setConsumerKey("anonymous");
  oauthConfig.setConsumerSecret("anonymous");

  var body = "<?xml version=\"1.0\" encoding=\"utf-8\"?><atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:apps=\"http://schemas.google.com/apps/2006\"><apps:property name=\"orgUnitPath\" value=\"" + ou + "\" /></atom:entry>";

  var requestData = {
    "method": "put",
    "contentType": "application/atom+xml",
    "oAuthServiceName": "google",
    "oAuthUseToken": "always",
    "payload": body
  };

  var url = "https://apps-apis.google.com/a/feeds/orguser/2.0/" + customerId + "/" + email;
  var result = UrlFetchApp.fetch(url, requestData);
  Logger.log(result.getContentText());
}

答案 1 :(得分:1)

我认为现在这项任务非常简单: 这个sinple代码应该有效:

var emailAddress = 'myuser@mydomain.com';
var user = AdminDirectory.Users.get(emailAddress);
var orgunittomove='myorgunit'   //you can set the whole path;

user.orgUnitPath = orgunittomove;
AdminDirectory.Users.update(user, emailAddress);

答案 2 :(得分:0)

以与上一个答案相同的方式,可以在创建用户时在用户对象上添加组织单位。在用户对象中,您必须设置orgUnitPath属性。

var user = {
    primaryEmail: "aperetz@austriajohn.edu",
    orgUnitPath:"/Students", 
        name: {
        givenName: "Albert",
        familyName: "Peretz"
    },
    password: "XWYlkf"
};
userGsuite = AdminDirectory.Users.insert(user);