とりあえず、前置き
Google Appsの管理者の皆さん、こんにちは。
日々、Appsのユーザ管理や、状況把握について、頭を悩ませているのではないでしょうか。
前回に引き続いて、GASにAdmin SDKのAPIが追加されたようなので、使ってみました。
今回は、Directory APIでグループの追加/削除/取得の方法と、ユーザのグループへの追加方法を紹介します。
実行時の権限の承認や、APIの有効化は、前回の記事を見てください。
本日のコード
架空の「第1営業部」というグループを作成/削除/取得とユーザの追加のコードをそれぞれ関数に分けています。
function CreateGroup() {
var res = AdminDirectory.Groups.insert({email: "[グループのEmailアドレス]", name: "第1営業部", description: "第1営業部のグループ"});
Logger.log(res);
return res.id;
}
function GetGroup() {
var res = AdminDirectory.Groups.get("[グループのid]");
Logger.log(res);
}
function DeleteGroup() {
var res = AdminDirectory.Groups.remove("[グループのid]");
Logger.log(res);
}
function AddToGroup() {
var userEmail;
// ユーザの取得
var user = AdminDirectory.Users.get("[メールアドレス]");
Logger.log(user);
for(var i = 0; i < user.emails.length; i++) {
if(user.emails[i].primary) {
userEmail = user.emails[i].address;
}
}
// グループの取得
var group = AdminDirectory.Groups.get("[グループのid]");
Logger.log(group);
// グループにユーザを追加(オーナーとして)
var res = AdminDirectory.Members.insert({email: userEmail, role: "OWNER"}, group.email);
Logger.log(res);
}
解説
グループの追加は、AdminDirectory.Groups.insert()
を使います。
引数には、
- グループのメールアドレス(email)
- グループ名(name)
- グループの詳細(description)
が含まれるオブジェクトを指定します。
戻り値に作成されたグループのidや、グループの情報が含まれるので、利用する事が可能です。
特に、idはグループを取得する時に指定するので、保存しておいた方が良いです。
グループの取得は、AdminDirectory.Groups.get()
を使います。引数には、グループのidを指定します。
グループの削除は、AdminDirectory.Groups.remove()
を使います。引数には、get()と同じく、グループのidを指定して下さい。
ユーザの取得は、AdminDirectory.Users.get()
を使います。引数は、メールアドレスを指定すると、オブジェクトが返されます。このユーザオブジェクトは、メールアドレスを複数持っているので、user.emails[i].primary
がtrueのメールアドレスを使うようにしています。 配列の0番目がプライマリとは限らない ので、注意して下さい。
ユーザのグループへの追加は、AdminDirectory.Members.insert()
を使います。
第1引数には、
- メールアドレス(email)
- 権限(role)
が含まれるオブジェクト、第2引数には、グループのメールアドレスを指定します。
権限には、
"OWNER"、"MANAGER"、"MEMBER"の3段階で指定できます。
"OWNER"は、グループの削除、グループの設定変更、メンバーの権限変更、メンバーの追加/削除、グループへのメッセージの送信ができます。OWNERはグループに1つしか作れません。
"MANAGER"は、Google Groups for Businessが使えるのであれば、有効になる権限で、OWNERと同じ権限があります。MANAGERはグループに複数作ることができます。
"MEMBER"は、グループのメンバーで管理権限はありません。
実行結果
ユーザのグループのページを開くと、sales1というグループに属している事が確認できました。
(Google Apps無料版でグループのリストって見れないんだろうか…。)