Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

ttyokoyama
GDG Okayama Organizer たまにGoogle関連の技術の事を投稿しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした