3

I would like to get a list of members in a Google group using Admin SDK.

But im not getting how to do this. I found below link - https://developers.google.com/admin-sdk/directory/v1/guides/manage-group-members

But I do not know how to use POST method in Google app script.

Can someone please guide me with an example?

UPDATED

I got the output as below, But i would like to access each element (role,email) separately for each member of the group. Is that possible??

{ "role": "OWNER", "kind": "admin#directory#member", "type": "USER", "etag": "\"fdo0/1gUrEe8bli75zvzmqFHyH3cPzlQ\"", "id": "107108832717913338955", "email": "useremailid@domain.com", "status": "ACTIVE" }

Thanks in advance.

Kanchan
  • 65
  • 2
  • 11

2 Answers2

5

Please follow the steps,

  1. Login your G drive using super admin account.
  2. Create one Google sheet.
  3. Go to sheet Tool menu -- script Editor.. Save Script project project. Enable admin SDK
  4. Apps script editor click on Resources menu select Advance Google Services -- In Pop up on Admin Directory Apis then Click Google Developers Console link. Developer Console -- click on Library --> search APIs box enter Admin sdk --> click on admin Sdk api link ==> ENABLE and close dev console.

=== At Apps script editor paste following code.

var onSheet = SpreadsheetApp.getActiveSpreadsheet();
var groupKey = "googlegroupid@domainName.com"

function MainGetUserList()
{
    var rows = [];
    var pageToken, page;
    do {
        page = AdminDirectory.Members.list(groupKey,
        {
            domainName: 'YOURDOMAINNAME.@com',
            maxResults: 500,
            pageToken: pageToken,
        });
        var members = page.members
        if (members)
        {
            for (var i = 0; i < members.length; i++)
            {
                var member = members[i];
                var row = [groupKey, member.email, member.role, member.status];
                rows.push(row);
            }
        }
        pageToken = page.nextPageToken;
    } while (pageToken);
    if (rows.length > 1)
    {
        var sheetData = onSheet.getSheetByName("Sheet1")
        var header = ['Group Name', 'User Id', 'User role', 'User Status'];
        sheetData.clear()
        sheetData.appendRow(header).setFrozenRows(1);
        sheetData.getRange(2, 1, rows.length, header.length).setValues(rows);
    }
}

==> Run MainGetUserList() function allow the permission, open you Google Sheet refresh it.

Done.

I have tested this 20k members. Thanks

Shivaji
  • 367
  • 3
  • 5
  • Also I have one more query.,Is it possible to get the list of groups in which I have manager or owner access? I mean , If I enter my email id , It should display all the group email id's in which I have manager or owner role – Kanchan Sep 19 '16 at 10:52
  • currently no direct method available to for this but using user email id you can find this user total groups membership – Shivaji Sep 20 '16 at 07:34
  • Ok..Thanks for the reply anyway..:) – Kanchan Sep 20 '16 at 10:10
0

Try to use Members:list to retrive list of all members in a group.

HTTP request

GET https://www.googleapis.com/admin/directory/v1/groups/groupKey/members

Every request your application sends to the Directory API must include an authorization token. The token also identifies your application to Google. Your application must use OAuth 2.0 to authorize requests.

HTTP response:

{
  "kind": "admin#directory#members",
  "etag": etag,
  "members": [
    members Resource
  ],
  "nextPageToken": string
}
Android Enthusiast
  • 4,826
  • 2
  • 15
  • 30