如何排除一组AdminDirectory列表

问题描述 投票:0回答:1

我想要所有 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();//.
        }//.
      }

但它仍然返回了那些不好的群体。

用户邮箱 群组ID
[电子邮件受保护] [电子邮件受保护]
[电子邮件受保护] [电子邮件受保护]
[电子邮件受保护] [电子邮件受保护]
[电子邮件受保护] [电子邮件受保护]
[电子邮件受保护] [电子邮件受保护]
javascript google-apps-script active-directory
1个回答
0
投票

你尝试过类似的吗?

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))
© www.soinside.com 2019 - 2024. All rights reserved.