見出し画像

Google グループアドレス・所属メンバー・権限取得スクリプト

はじめまして、株式会社Mobility Technologies IT戦略本部 IT戦略部 の宇佐美です。
このページでは、Google グループアドレスの取得、およびグループアドレスに所属するメンバーと権限を一括で取得するスクリプトをご紹介します。

概要

Googleのグループアドレスですが、Google Workspaceにはグループの一覧をエクスポートする手段がなく、どのグループに、どのメンバーが所属しているかを一覧で確認する手段がありません。
なお、同様のスクリプトがないか検索すると、Googleの仕様で200行までしか取得できず、全件取得するにはページネーションを考慮する必要があります。
このページで紹介するスクリプトは、ページネーションを気にせずに一覧を取得できる方法になります!

準備

  • スクリプト実行するには、ユーザー閲覧とドライブ管理者権限が必要です。両方の権限をもつGoogleアカウントをご用意ください。

  • リストを表示するためのスプレッドシートを新規作成しておきます。

  • スプレッドシートのファイル名を任意で入力します。

  • 作成したスプレッドシートの「拡張機能」→「Apps Script」をクリックします。

プロジェクトの名前を任意で入力してください。
Apps Script画面の、サービスを開きます。

Admin SDK API」の「directory_v1」を選択し、「追加」をクリックします。

同様に、サービスから「Groups Settings API」の「v1」を選択し、「追加」をクリックします

作成

いよいよ作成です!
ファイル名を決めて、以下のコードを貼り付けて保存してください。

//スプレッドシートにメニューを追加
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu("実行");
  menu.addItem("グループ・権限取得", "listAllGroupsMembers");
  menu.addToUi();
}

function listAllGroupsMembers() {
 
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var k = 2;
 
  var pageToken, page;
  do {
    page = AdminDirectory.Groups.list({
      domain: 'XXXXXX', //利用中ドメインに書き換えてください
      maxResults: 300,
      pageToken: pageToken
    });
    var groups = page.groups;
    if (groups) {
      for (var i = 0; i < groups.length; i++) {
        var group = groups[i];
          var members = AdminDirectory.Members.list(group.email).members;
          if (members){
            for (var l = 0;l < members.length;l++){
              var member = members[l];
              if (sheet.getRange(k,2) + sheet.getRange(k,3) == group.email + member.email){
              }else{
                sheet.getRange(k,1).setValue(group.name);
                sheet.getRange(k,2).setValue(group.email);
                sheet.getRange(k,3).setValue(member.email);
                sheet.getRange(k,4).setValue(member.role);
                var user;
                try{
                  user = AdminDirectory.Users.get(member.email);
                  if (user){
                    sheet.getRange(k,5).setValue(user.name.fullName);
                  }
                }catch(e){
                  Logger.log(e.message);
                }
                k ++; 
              }
            }
          }
      }
    } else {
      Logger.log('グループがありません');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
  MailApp.sendEmail("メールアドレス", "処理完了", "listAllGroupMembersの処理が完了しました。"); 
    // 「メールアドレス」に処理が完了したら、完了メールを通知させたメールアドレスを適宜入力してください
}

図のように「onOpen」となっていることを確認し、「実行」をクリックしてください。

以上で作成完了です!

動作

スプレッドシートを読み込み直すと、「実行」→「グループ・権限取得」のボタンが追加されているので、クリックしてください。

グループ・権限取得」をクリックすると初回のみ、承認の権限の確認が求められます

アカウントを選択してください。
許可をクリックしてください。

権限付与後、もう一度「実行」→「グループ・権限取得」をクリックしてください。スクリプトが実行されます。
※実行中は「スクリプトを実行しています」と表示されます。

完了すると、「スクリプトが終了しました」と表示されます。

また、スクリプトで指定したメールアドレスに、完了メールが届きます!

注意点

グループアドレスの数が多い場合、処理完了までに時間がかかります。
※2023/3/10時点の仕様に基づきます

最後に

私たち部門では、部門の工数削減のため、以下のような取り組みを積極的に行っています。これまでのご経験を活かせるような業務やタスクが多数あります!

  • 利用できるシステム・アプリの導入

  • 利用してみたいシステム・アプリの検証等

MoTでは、共に働く仲間を募集中です。
興味がある方は、お気軽にご連絡ください!