自社ドメイン外のメンバーが含まれる場合は、@以前をマスクするようにしています。
コード中の"example.com"を自社ドメインに書き換えてお使いください。
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getSheets()[0]; | |
//実行メニューを作成 | |
function onOpen() { | |
var ui = SpreadsheetApp.getUi(); | |
var menu = ui.createMenu("GAS実行"); | |
menu.addItem("Googleグループメンバー出力", "exportGoogleGroupMembers"); | |
menu.addToUi(); | |
} | |
function exportGoogleGroupMembers() { | |
//対象ドメイン | |
var domainName = 'example.com'; | |
//取得するグループの最大数(デフォルトは200) | |
var maxResults = 500; | |
//シートをクリア | |
sheet.clear(); | |
var values = []; | |
//ヘッダー追加 | |
values.push([ | |
"メールアドレス", | |
"グループ名", | |
"説明", | |
"メンバー数", | |
"メンバー", | |
]); | |
//グループ一覧の取得 | |
var groupsList = AdminDirectory.Groups.list({domain: domainName, maxResults: maxResults}); | |
if(groupsList) { | |
for(var i = 0; i < groupsList.groups.length; i++){ | |
var value = []; | |
//グループの基本情報を取得 | |
value.push(groupsList.groups[i].email); //メールアドレス | |
value.push(groupsList.groups[i].name); //グループ名 | |
value.push(groupsList.groups[i].description); //説明 | |
value.push(groupsList.groups[i].directMembersCount); //メンバー数 | |
var strMembers = ''; | |
//グループのメンバーを取得 | |
var members = AdminDirectory.Members.list(groupsList.groups[i].email).members; | |
if(members != null) | |
{ | |
for (var j = 0; j < members.length; j++){ | |
//社外ドメインのアドレスの場合、ドメイン部以外はマスクする | |
if(members[j].email.match(/@example.com/)){ | |
strMembers += members[j].email + '\r\n'; | |
}else{ | |
var splitEmail = members[j].email.split('@'); | |
strMembers += '*****@' + splitEmail[1] + '\r\n'; | |
} | |
} | |
} | |
value.push(strMembers.trim()); | |
values.push(value); | |
} | |
//取得したデータをスプレッドシートにセット | |
sheet.getRange(1, 1, groupsList.groups.length + 1 , 5).setValues(values); | |
sheet.getRange(1, 1, groupsList.groups.length + 1 , 5).setVerticalAlignment('top') | |
} | |
} |