こんにちは。ひさです。
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();
}
実行
追加されたメニューから実行します。
見事に取れました。よかったね!
