#背景
全容はまた書きたいのですが、色々あってメーリングリストに含まれているユーザーを全量把握する必要が出てきた。
ネット検索したら出てくるけど、何故かうまく行かないので結局自分で書きました。
#対応
スプレッドシートのスクリプトエディタに書いてください。
あとドメイン名は会社で使っているドメイン名を入れてください。
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);
}
}