35
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GASでAdmin SDKを利用する(Directory編)その1

Last updated at Posted at 2014-02-22

とりあえず、(ネタとして)前置き

Google Appsの管理者の皆さん、こんにちは。
日々、Appsのユーザ管理や、状況把握について、頭を悩ませているのではないでしょうか。

最近、GASにAdmin SDKのAPIが追加されたようなので、使ってみました。
今回は、Directory APIでユーザリストの取得方法を紹介します。
(少し、ユーザの情報が取れるようなので、活用していただけたらと思っています。)

本日のコード

コード.gs
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の設定をいくらしても、何もできません…。
Apps版の設定.png

GAS側の拡張サービスをONにする

DirectoryAPI承認.png

Developers Console側でAPIを有効にする。

CloudConsole認証.png

実行時に承認

実行時承認.png

解説

今回のコードは、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を設定して呼び出します。

サンプル.gs
  var users = AdminDirectory.Users.list({
     domain: '[your domain]'
    ,maxResult: [1500までで取得件数を指定]
    ,pageToken: [API実行時に取得したToken]
  });

具体的なコードは本家のサンプルを参照した方がいいかもしれません。
https://developers.google.com/apps-script/advanced/admin-sdk-directory#list_all_users

35
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?