投稿者:大島

こんにちは、NI+C大島です

GSuiteを利用しているシステム管理者の方々向けの記事になります。

GSuite上に登録されたグループアドレスを一覧で取得したい場合がありますが
GSuiteの管理者画面からは一覧で取得することが出来ません(ユーザーは一覧で取得できるんですが....)
そこで、今回グループアドレスを一覧で取得するGASを紹介します。

function getListMain() {
  let domain = '<GSuiteで利用している自組織ドメインを記載>'
  let endFlag = false;
  let token = '';
  
  while(!endFlag){
    try {
      var groupList = AdminDirectory.Groups.list({
          domain: domain, //使用しているドメイン
          maxResults: 200, //取得する件数
          pageToken: token
      });
      
      for(var i = 0; i < groupList.groups.length; i++){
        console.log(groupList.groups[i].email)
      }
      
      if(groupList["nextPageToken"] == null){
        console.log("nextPageToken null: "+ groupList["nextPageToken"])
        endFlag = true;
      }else{
        token = groupList["nextPageToken"];
      }
    } catch(error) {
      console.log(error);
    }
  }
  console.log("END")
}

GASでグループアドレスを取得したい場合、利用する関数は「AdminDirectory.Groups.list」になりますが
「AdminDirectory.Groups.list」をそのまま実行すると"maxResults"に設定した値分しかグループアドレスが取得できません。

そのため、200件以上グループアドレスが登録されているGSuiteの場合は"pageToken"を利用して
レスポンスデータに"nextPageToken"が取得できる限り、while文で「AdminDirectory.Groups.list」を実行する事で
200件以上のグループアドレスが取得可能になります。

本スクリプトを実行すると、ログにグループアドレスの一覧が出力されますので
必要に合わせてコピペしてお使い頂けます。

20200915.jpg