Edited at

G Suiteに登録されているメーリングリストと、中に入っているユーザーの一覧を取得する


背景

全容はまた書きたいのですが、色々あってメーリングリストに含まれているユーザーを全量把握する必要が出てきた。

ネット検索したら出てくるけど、何故かうまく行かないので結局自分で書きました。


対応

スプレッドシートのスクリプトエディタに書いてください。

あとドメイン名は会社で使っているドメイン名を入れてください。


getGroupUser

//onOpenで書く事でスプレッドシート読み込み時に実行され、ツールバーへ「管理」ー「グループアドレス一覧取得」とメニューが表示されるようになる。

function onOpen() {
SpreadsheetApp.getUi()
.createMenu("管理")
.addItem("グループアドレス一覧取得", "GetGroupUser")
.addToUi();
}

//以下実際に実行される処理
function GetGroupUser()
{
// アクティブなシート取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ここにスプレッドシートのシート名を入力');

// グループ一覧の取得
var groups = AdminDirectory.Groups.list({
domain: 'ここはドメイン名を入力してください'
});

if(groups) {
var rows = [];
var rowcount = 0;

// ヘッダ行
rows.push(["GroupAddress", "Description", "Name", "DirectMembersCount", "UserAddress"]);

// データ行
for(var i = 0; i < groups.groups.length; i++){
// グループに所属するメンバーの取得
var cols = [];
var members = AdminDirectory.Members.list(groups.groups[i].email).members
if (members) {
var memlen = members.length;
}else{
var memlen = 1;
}

//メーリングリストにメンバーが含まれている場合の処理
for (var j = 0; j < memlen; j++){
cols.push(groups.groups[i].email);
cols.push(groups.groups[i].description);
cols.push(groups.groups[i].name);
cols.push(groups.groups[i].directMembersCount);

//メンバーが含まれていなかった場合は
if(members){
cols.push(members[j].email);
}else{
cols.push("");
}
// 行追加
rows.push(cols);
var cols = [];
// 最終的な行数計算
rowcount = rowcount + 1;
}
}
// 書き込み
sheet.getRange(1, 1, rowcount +1 , 5).setValues(rows);
}
}


こんな感じでメニューとして表示されます。

image.png