繁体   English   中英

获取用户列表的 Google Groups

[英]Getting Google Groups for a list of users

我有一个谷歌电子表格,里面有两张表(输入和输出)。
输入表在 A 列中包含用户 email 地址列表(A1 是标题)。

我想遍历用户列表并提取每个用户所在的 Google 组列表,然后将该数据转储到 Output 表中。 A 列是他们的 email 地址,B,C,D 等包含他们的组。

所以像:

╔═══════════════════╦════════════════════╦════════════════════╦════════════════════╦════════════════════╗
║       User        ║    User Groups     ║                    ║                    ║                    ║
╠═══════════════════╬════════════════════╬════════════════════╬════════════════════╬════════════════════╣
║ user@example.com  ║ group1@example.com ║ group2@example.com ║ group3@example.com ║ group4@example.com ║
║ user2@example.com ║ group4@example.com ║ group2@example.com ║                    ║                    ║
║ user3@example.com ║ group5@example.com ║ group1@example.com ║ group3@example.com ║                    ║
╚═══════════════════╩════════════════════╩════════════════════╩════════════════════╩════════════════════╝

到目前为止,这就是我所拥有的:

function getUserGrps(){
  var ssID = "spreadsheetID"
  var ss = SpreadsheetApp.getActiveSpreadsheet() || SpreadsheetApp.openById(ssID)
  var inputSheet = ss.getSheetByName("Input")
  var outputSheet = ss.getSheetByName("Output")
  var groups = []
  
  var userList = inputSheet.getDataRange().offset(1, 0).getValues()
  userList.pop()
  
  userList.forEach(function(user){
    var response = AdminDirectory.Groups.list({userKey: user})
    var userGroups = response.groups
    userGroups.forEach(function(group){
      Logger.log(group.name)
    })
  })
}

我尝试了以下方法:

userList.forEach(function(user){
    var response = AdminDirectory.Groups.list({userKey: user})
    var userGroups = response.groups
    userGroups.forEach(function(group){
      groups.push(group.name)
    })
  })

然后转储 output,但有一些问题。 首先,它只是在 A 列中转储(作为列表)。 其次,我正在努力寻找一种方法来将用户 email 地址连接/添加到组列表中。

基本上,我脑子里放了个屁,任何指导都将不胜感激。

有很多方法可以在数组顶部添加一些东西。 我认为您尝试做的事情有助于使用map()和数组连接创建一个新数组(我使用了扩展语法)。

function getUserGrps(){
  const ssID = "spreadsheetID";
  const ss = SpreadsheetApp.getActiveSpreadsheet() || SpreadsheetApp.openById(ssID);
  const inputSheet = ss.getSheetByName("Input");
  const outputSheet = ss.getSheetByName("Output");
  let groups = [];
  
  const userList = inputSheet.getDataRange().offset(1, 0).getValues();
  userList.pop();
  
  let maxGroups = 0;
  userList.forEach(function(user) {
    const userEmail = user[0];
    const response = AdminDirectory.Groups.list({userKey: userEmail});
    const userGroups = response.groups ? response.groups.map(group => group.email) : [];
    groups.push([userEmail, ...userGroups]);
    
    // Set the maximum number of groups
    if (userGroups.length > maxGroups)
      maxGroups = userGroups.length;
  });
  
  // When printing a table with setValues(), every row needs to have the same length
  const numColumns = maxGroups + 1;
  const table = groups.map(function(row) {
    if (row.length < numColumns) {
      return [...row, ...new Array(numColumns - row.length)];
    }
    return row;
  });
  
  outputSheet.getRange(1, 1, table.length, table[0].length).setValues(table);
}

推荐阅读:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM