こんにちは。ひさです。
Google Appsの管理コンソールは見た目は美しいのですが、色々使いづらい・・・
最低限用意するから必要ならカスタマイズしなよ!ってことなのかなぁと思います。
ユーザー単位でそのユーザーが所属するグループアドレスは参照できますが、
グループアドレスに所属するユーザーはいちいちグループを開かないといけないので不便。
というわけで一覧を取得するスクリプトを作成してみました。
必要な設定
Google Apps管理コンソールの[セキュリティ]からAPIアクセスを有効にします。
スプレッドシートの設定
Google Drive上でスプレッドシートを作成し、[ツール]→[スクリプトエディタ]を起動します。
エディタ上の[リソース]から[Googleの拡張サービス]を選択し、今回必要とするAPIを有効化します。
続いて画面表示の通り、[Googleデベロッパーコンソール]を押下し、メニューから[API]→対象のAPIを選択、有効化します。
取得コード
function GetGroupAddress() { // アクティブなシート取得 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // グループ一覧の取得 var groups = AdminDirectory.Groups.list({ domain: 'sanwasystem.com' }); if(groups) { var rows = []; var rowcount = 0; // ヘッダ行 rows.push(["GroupAddress", "Description", "Name", "DirectMembersCount", "UserAddress"]); // データ行 for(var i = 0; i < groups.groups.length; i++){ // グループに所属するメンバーの取得 var members = AdminDirectory.Members.list(groups.groups[i].email).members for (var j = 0; j < members.length; j++){ var cols = []; cols.push(groups.groups[i].email); cols.push(groups.groups[i].description); cols.push(groups.groups[i].name); cols.push(groups.groups[i].directMembersCount); cols.push(members[j].email); // 行追加 rows.push(cols); } // 最終的な行数計算 rowcount = rowcount + members.length; } // 書き込み sheet.getRange(1, 1, rowcount +1 , 5).setValues(rows); } }
GASはパフォーマンス向上のため、APIをなるべくコールしない様作成する必要があります。
ついでにスプレッドシート上から呼び出せるようメニューに追加します。
function onOpen() { SpreadsheetApp.getUi() .createMenu("管理") .addItem("グループアドレス一覧取得", "GetGroupAddress") .addToUi(); }
実行
追加されたメニューから実行します。
見事に取れました。よかったね!