yamamanx

growing hard days

*

Google Apps ScriptでAdmin SDK Directory Serviceを使ってグループメンバー情報を出力する

      2015/07/17


GoogleAppsのGoogleGroupをメーリングリストとして使っている人がほとんどだと思うのですが、メンバーの一覧って見る画面がないので、いちいちGroupのメンバーを開くか、他のファイルで管理したりって事で、棚卸しする時に面倒なので、今現在どのメールアドレスがメンバーになっているのかを出力する事はGoogle Apps Scriptで簡単に出来ないかと思って調べてみたら簡単に出来たので記載します。

Admin SDK Directory Serviceを有効にする

今時点では試験運用中のGoogleの拡張サービスなので、
スクリプトエディタで[リソース]-[Googleの拡張サービス]で「Admin Directory API」をONにする。
同じ画面の下にリンクで「Googleデベロッパーコンソール」があるのでそこからGoogleデベロッパーコンソールでも、「Admin SDK」を有効にしておく。

グループメンバーを確認する方法

下のコードをSpreadSheetの[ツール]-[スクリプトエディタ]に書いて、実行したら、とりあえずSpreadSheetに今の設定が書き出せます。
ドメインとかメールアドレスとかは編集して自己責任で参考にしてください。

詳細は公式のAdmin SDK Directory Serviceのページを確認してください。

簡単に説明します。

「page = AdminDirectory.Groups.list~」で指定ドメインのGoogleGroupのリストをpage変数に代入します。

で、「page.groups」をループでまわして、
「var members = AdminDirectory.Members.list(group.email).members」でグループメンバーを代入します。

で、次はメンバーをループでまわしながら、
「user = AdminDirectory.Users.get(member.email)」でユーザ情報を代入します。
※ user.name.fullNameの漢字名が必要だったため。
※ ドメイン外のメールアドレスが含まれる事を考慮したかったのですが、「AdminDirectory.Users.get」でエラーになる事しか分からなかったので、try~catchにしてます。

(ディレクトリのAPIに触れていると、names.nsfの扱いやすさを思い出します。)

Admin_SDK_Directory_Service_-_Google_Apps_Script_—_Google_Developers

@yamamanx
開発ベンダー5年、ユーザ企業システム部門通算8年目のSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。

 - Google, GoogleAppsScript, Web ,

ad

ad

Comment

  1. @yamamanx @yamamanx より:

    ご要望のコードを書く時間が今はなくてすいません。
    とりあえずうちでもやっている方法を。
    GASのタイムアウトにはひっかかりますので、そのときは手動で、16行目の「var group = groups[i];」の後に「if (group.email.substr(0,1) >= ‘t’){」とかを入れて、4行目の開始行をずらして続きから出力出来るようにしてみています。

  2. 安藤 芳昭 より:

    グループメンバーリストのGoogle Apps Script、大変参考になりました。
    ありがとうございます。
    タイムアップと多人数でエラーになってしまうので、
    グループごとにリストしたいのですが、全くの素人で上手くできません。
    追加Scriptを教えて頂けるありがたいです。

Message

メールアドレスが公開されることはありません。

  関連記事

Redmine-Logo-CyberSprocket-Composite-300x300-png8 copy
redmine_omniauth_googleプラグインをRedmine3.0.0で動くようにする

redmine_omniauth_googleプラグインをインストールしたところ …

Redmine-Logo-CyberSprocket-Composite-300x300-png8
Redmine 3.0.0 のメールサーバーでGoogleApps SMTPサーバーを利用する

Redmineのメール通知サーバーとしてGoogleAppsを使用する方法です。 …

Cyclemeter-google-map
自転車でナビ+記録出来るアプリ+ホルダー+バッテリー試してみた

目的 記録を蓄積して振り返りやる気を継続する 飽きないように単調にならないように …

iphone-icon-home
ホームページやサイトがiPhone,iPadのホーム画面に追加された時のアイコンを設定しておく

headタグでapple-touch-iconを指定 [crayon-58451 …

nodejs-1024x768
Mac OS X Yosemite にnode.js + mongodb 環境を作る

node.jsインストール nodejs.orgサイトで「INSTALL」ボタン …

poodletest
「POODLE」SSL3.0の脆弱性対応

各社が騒ぎ立てている「POODLE」 Padding Oracle On Dow …

openweathermapapi
C#でOpenWeatherMap APIを使って天気情報を取得する

C#でOpenWeatherMapAPIを使って現在の天気を取得してみました。 …

twilio-openweathermap
Twilio APIでOpenWeatherMap APIで取得した天気情報を毎朝モーニングコールする

OpenWeatherMap APIのJsonから取得した気温と天気の情報を、T …

nodejs-1024x768
Windows 8 にnode.js + mongodb 環境を作る

node.jsインストール nodejs.orgサイトで「INSTALL」ボタン …

AptanaStudio3-mint2
Linux Mint 17 MATE 64bit にAptana Studio 3をインストールして日本語化

JDKのインストール 過去記事「Linux Mint 17 MATE 64bit …