とりあえず、(ネタとして)前置き
Google Appsの管理者の皆さん、こんにちは。
日々、Appsのユーザ管理や、状況把握について、頭を悩ませているのではないでしょうか。
最近、GASにAdmin SDKのAPIが追加されたようなので、使ってみました。
今回は、Directory APIでユーザリストの取得方法を紹介します。
(少し、ユーザの情報が取れるようなので、活用していただけたらと思っています。)
本日のコード
function listAllUsers() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var users = AdminDirectory.Users.list({
domain: '[your domain]'
});
if(users) {
var cells = [];
cells.push(["fullName", "isAdmin", "isDelegatedAdmin", "isMailboxSetup", "creationTime", "password"]);
for(var i = 0; i < users.users.length; i++) {
var rows = [];
rows.push(users.users[i].name.fullName);
rows.push(users.users[i].isAdmin);
rows.push(users.users[i].isDelegatedAdmin);
rows.push(users.users[i].isMailboxSetup);
rows.push(users.users[i].creationTime);
rows.push(users.users[i].password);
cells.push(rows);
}
sheet.getRange("A1:F4").setValues(cells);
}
}
実行時に認証が必要です。
忘れてはいけない、Apps版コンソールのAPI有効化
これがないと、GASの設定をいくらしても、何もできません…。
GAS側の拡張サービスをONにする
Developers Console側でAPIを有効にする。
実行時に承認
解説
今回のコードは、Admin SDKのDirectory APIを実行した結果をSpreadsheetに吐き出しました。
名前(フルネーム)、管理者かどうか、委任管理者かどうか、メールボックスのセットアップ済か、アカウント作成日、パスワード(!?)を取得して表示しています。
GASのドキュメントは、現状では、サンプルコードの提示のみとなっているので、
API本体のドキュメント(https://developers.google.com/admin-sdk/directory/v1/reference/users/list)で確認することになります。
委任管理者というのは、Google Appsの初期値で(?)ユーザ管理者とか、グループ管理者だったりと、制限付きの管理権限が与えられる役割が設定されています。その権限が割り当てられているかどうか。だと思います。
(私の今のApps環境だと全てfalseだったもので…。時間がある時にユーザに設定して確認してみます。)
私の実行環境がApps無料版で、ユーザが3人しかいませんから、上記サンプルで良いですが、ユーザがたくさんいる場合は、APIの制限に引っかかるので、以下のように取得件数の上限と、2ページ目以降を取得するためのTokenを設定して呼び出します。
var users = AdminDirectory.Users.list({
domain: '[your domain]'
,maxResult: [1〜500までで取得件数を指定]
,pageToken: [API実行時に取得したToken]
});
具体的なコードは本家のサンプルを参照した方がいいかもしれません。
https://developers.google.com/apps-script/advanced/admin-sdk-directory#list_all_users