如何使用 Google Apps 脚本删除行

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

我已经尝试了该网站上列出的至少 3 种方法,但没有一种方法可以删除我不想要的行。希望有人可以帮助执行这个函数。

我想要所有 Active Directory 组及其成员的列表,但我想排除某些组([电子邮件受保护][电子邮件受保护])显示在 A 列的列表中。

这些群组中的成员与目录中的其他成员具有不同的域([电子邮件受保护]来自 [电子邮件受保护])。

其中大约有 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();//.
        }//.
      }

还有这个:

function deleteRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[1].includes('[email protected]')) { 
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};
}

还有这个:

function deleteRows() {
  varsheet = SpreadsheetApp.getActiveSheet();
  vartextToFind = "[email protected]";
  varrowsToDelete = [];
varlastRow = sheet.getMaxRows();
  varformulas = sheet.getRange("B1:B"+ lastRow).getFormulas();
  for(vari = 0; i < formulas.length; i++) {
    varformula = formulas[i][0];
    varpattern = newRegExp('\\b'+ textToFind + '\\b', 'i');
    if(formula && pattern.test(formula)) {
      rowsToDelete.push(i + 1);
    }
  }
if(rowsToDelete.length> 0) {
    rowsToDelete.reverse().forEach(function(rowIndex) {
      sheet.deleteRow(rowIndex);
    });
  }
}

但它们都不起作用,我仍然遇到那些坏团体???

javascript google-apps-script google-app-engine 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.