Google apps script 从组电子邮件(组中的组)应用程序脚本中提取组电子邮件,然后提取组电子邮件

Google apps script 从组电子邮件(组中的组)应用程序脚本中提取组电子邮件,然后提取组电子邮件,google-apps-script,google-sheets,admin,google-groups,Google Apps Script,Google Sheets,Admin,Google Groups,我正在编写一个脚本,其中包括从组中获取成员, 该脚本标识邮件是团体电子邮件还是成员电子邮件, 但是,在我的工作中,我们是一组一组的 这是剧本 function getGroupUsers() { var group = sheet.getActiveRange().getValue(); var members = AdminDirectory.Members.list(group).members; for (var i = 1; i < members.length; i++) {

我正在编写一个脚本,其中包括从组中获取成员, 该脚本标识邮件是团体电子邮件还是成员电子邮件, 但是,在我的工作中,我们是一组一组的

这是剧本

function getGroupUsers() {
var group = sheet.getActiveRange().getValue();
var members = AdminDirectory.Members.list(group).members;
for (var i = 1; i < members.length; i++) {
  var member = members[i];
  var caseUser = sheet.getRange(i+1, 1);
  var caseGroupe = sheet.getRange(i+1, 2);   

  var lastRange = sheet.getRange(sheet.getLastRow(), 3);
//  var caseGroupe2 = sheet.getRange(i+1, 4);

switch (member.type) {
    case 'USER':
      Logger.log('%s is a user', member.email);
      caseUser.setValue(member.email);
      break;
    case 'GROUP':
      Logger.log('%s is a group', member.email);
      //var group = GroupsApp.getGroupByEmail(member.email);
      caseGroupe.setValue(member.email);
      break;
    default:
      Logger.log('nothing');
  }
这是可行的,就像第二列中的组一样,但我需要自动扩展它们,就像我在开始时对循环所做的那样,但我不确定它是如何工作的,我尝试了循环中的循环,但当我得到组成员时,在案例中只写了一个,而不是全部


如果您需要更多信息,或者您需要我解释一个您不确定是否理解的问题,请告诉我

我稍微修改了您的代码。你提到的在循环中做循环是正确的

我做了类似的事情,但我没有在循环中创建一个循环,而是创建了一个新函数,然后递归调用它。这是为了处理这样的情况:一个组将有另一个组,而另一个组将有另一个组作为成员

function getGroup(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cell = sheet.getActiveCell();
  var group = sheet.getActiveCell().getValue();  
  var subgroup = 1;
  getMembers(group, subgroup, cell, sheet);  
  cell.activate();  
}


function getMembers(group, subgroup, cell, sheet)
{
  var col =  cell.getColumn() +subgroup;
  var row =  cell.getRow() +1;
  try{  
    var members = AdminDirectory.Members.list(group).members;
    if(!members)
    {
      return 0; 
    }
  }
  catch (e)
  {
    return;
  }
  var offset = 0;
  for(var member in members){
    var newcell = sheet.getRange(row++,col);
    newcell.setValue(members[member].email);    
    if(members[member].type == 'GROUP'){
      newcell.activate();
      offset = getMembers(members[member].email,subgroup , sheet.getActiveCell() ,sheet);
      row = row + offset;
    }
  }
  return  member.length + offset;
}

我希望这对您的计划有所帮助。

非常感谢,这很有效!但它并没有开发整个组,我得到了TypeError:无法从未定义的行读取属性长度:“return member.length+offset;”但是想法就在这里,就像我认为它会起作用一样!我编辑了代码。我没有对没有成员的组进行测试。在这种情况下,当组中有0个成员时,它会停止。我尝试了一些if和其他条件,但这并不重要。即使使用我发布的已编辑代码,您仍然会出现错误吗?我的错!真管用!所有组的所有用户现在都在工作表上,谢谢!没有更多的错误,现在我试图找到一种方法,在同一列中显示来自所有组的成员,以使工作表更具可读性,如果您有想法,欢迎您: