我想要所有 Active Directory 组及其成员的列表,但我想排除某些组([电子邮件受保护]、[电子邮件受保护])显示在列表中。
这些群组中的成员与目录中的其他成员具有不同的域([电子邮件受保护]来自 [电子邮件受保护])。
我需要排除其中大约 6 个组。
function listAllGroups() {
var RatatoskSheet = SpreadsheetApp.getActiveSpreadsheet();
var grouprows = \[\];
var pageToken;
var page; //THIS IS WHERE I'M INCLUDING ALL GROUPS - HOW DO I EXCLUDE THE [email protected] GROUP ONLY?
do {
page = AdminDirectory.Groups.list({ domain: 'domain.org', maxResults: 100, pageToken: pageToken });
var groups = page.groups;
if (groups) {
for (var i = 0; i \< groups.length; i++) {
var group = groups\[i\];
var grouprow = group.email;
grouprows.push(grouprow)
}
}
pageToken = page.nextPageToken;
} while (pageToken);
var rows = \[\];
var pageToken, page2; //THIS IS WHERE I'M INCLUDING ALL MEMBERS IN GROUPS - HOW DO I EXCLUDE [email protected] MEMBERS (FROM THE [email protected] GROUP)?
for (var j = 0; j \< grouprows.length; j++) {
do {
page2 = AdminDirectory.Members.list(grouprows\[j\], { domainName: '@domiain.org', maxResults: 1000, pageToken: pageToken, });
var members = page2.members;
if (members) {
for (var i = 0; i \< members.length; i++) {
var member = members\[i\];
var row = \[member.email, grouprows\[j\]\];
rows.push(row);
}
}
pageToken = page2.nextPageToken;
} while (pageToken);
if (rows.length \> 1) {
var groupData = RatatoskSheet.getSheetByName("Groups");
var header = \['UserEmail', 'GroupID'\];
groupData.clear();
groupData.appendRow(header).setFrozenRows(1);
groupData.getRange(2, 1, rows.length, header.length).setValues(rows);
}
}
}
我尝试添加“删除”
for (var i = 0; i \< groups.length; i++) {
if (groups\[i\].getName() == "[email protected]") {
groups\[i\].remove();
}
像这样:
var page;
do {
page = AdminDirectory.Groups.list({ domain: 'domain.org', maxResults: 100, pageToken: pageToken });
var groups = page.groups;
if (groups) {
for (var i = 0; i \< groups.length; i++) {
var group = groups\[i\];
var grouprow = group.email;
grouprows.push(grouprow)
}
for (var i = 0; i \< groups.length; i++) { //adding in an attempt to remove certain groups
if (groups\[i\].getName() == "[email protected]") {//.
groups\[i\].remove();//.
}//.
}
但它仍然返回了那些不好的群体。
你尝试过类似的吗?
const keepers = ["[email protected]","[email protected]","[email protected]"];
do {
page = JSON.parse(AdminDirectory.Groups.list({ domain: 'domain.org', maxResults: 100, pageToken: pageToken }));
var groups = page.groups.filter(g => ~keepers.indexOf(g.id))