組織のGoogleグループ一覧を取得するしくみの作成


2023年 08月 31日

こんにちは、TIMの情報システム部門に所属している t_oikawa です。

Googleグループの一覧を確認したいとき、Googleグループアプリから確認する方法が一般的です。
参考:グループと投稿を見つけやすくする

TIMでは、Googleグループをメーリングリストとして利用していますが、目的のGoogleグループを探す際に、標準機能ではページ送りに時間がかかったり、うまく検索ができなかったり、不便に感じることがよくありました。
また、Googleグループ一覧表を手動でスプレッドシートに作成する方法を考えましたが、更新作業の運用が手間になるため、あまり現実的ではありません。
そこで、今回は Google App Script(GAS) を使ってGoogleグループの一覧を取得し、スプレッドシートに自動で表示するしくみを作ってみたので紹介します。

事前に用意するもの

  • Google Workspaceアカウント ※特権管理者権限が必要です

スプレッドシートの作成

はじめに、Googleスプレッドシートを新規作成します。
スプレッドシートを開いたら、「拡張機能」タブの「App Script」をクリックします。

スクリプトの作成

スクリプトを作成したら、「サービス」から「Admin SDK API」を追加します。
これにより、Google Workspace内で管理しているユーザーやグループのディレクトリ情報を取得できるようになります。

続いて、スクリプトのコードを作成します。コードは以下のとおりです。

//グループ一覧取得
function GetGroupList()
{
  //取得グループのドメイン
  var domainName = 'ドメイン名';
  var maxResults = 200;
  var pageToken = null;
  var endFlag = false;

  //アクティブなシートを取得する
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").activate();
  //シート初期化
  ss.clear();
  
  //スプレッドシートにセットするデータ
  var values = [];
  //ヘッダー追加
  values.push(["グループ名", "メールアドレス", "メンバーURL", "説明"]);

  while(!endFlag){
    try{
      //グループ一覧の取得
      var groupsList = AdminDirectory.Groups.list({domain: domainName, maxResults: maxResults, pageToken: pageToken});

      //データセット
      for(var i = 0; i < groupsList.groups.length; i++){
        var value = [];
        //グループのデータをセット
        value.push(groupsList.groups[i].name); //グループ名
        value.push(groupsList.groups[i].email); //メールアドレス

        group_name = groupsList.groups[i].email;//メールアドレスの@より前
        members_url = "https://groups.google.com/a/" + domainName + "/g/" + group_name.slice(0,group_name.indexOf("@")) + "/members"; //グループのメンバー一覧を確認するURL
        value.push(members_url);
      
        value.push(groupsList.groups[i].description); //説明

        //データ1行追加
        values.push(value);
      }

      if(groupsList["nextPageToken"] == null){
        endFlag = true;
      }else{
        pageToken = groupsList["nextPageToken"];
      }
 
    }catch(error) {
      console.log(error);
    }
  }
   
  //スプレッドシートにデータをセット
  ss.getRange(1, 1, values.length, 4).setValues(values);

}

今回作成したスクリプトのポイント

今回作成したスクリプトのポイントを簡単にまとめてみました。

  • スプレッドシートに表示する項目は「グループ名」「メールアドレス」「メンバーURL」「説明」とシンプルにしています。
    ※参加メンバーリストを取得してスプレッドシートに表示することもできますが、メンバーが多い場合、見づらくなってしまいます。そのため、Googleグループアプリのメンバー一覧のURLを表示できるようにしています。
  • デフォルトだと最大200件のグループしか表示できませんが、pageTokenを利用することで、200件以上のグループを表示できるようにしています。
  • 本スクリプトでは、取得できるGoogleグループのドメインの数は一つまでです。Google  Workspaceで複数ドメインのGoogleグループを利用している場合は、Googleグループの一覧を取得したいドメインごとにスクリプトを作成することをおすすめします。

トリガーの設定

手動でスクリプトを実行してGoogleグループ一覧を取得することもできますが、自動でスクリプトを実行できるトリガーを設定すると便利です。スクリプトエディタの画面左にある「トリガー」を開き、「トリガーの追加」を選択します。

以下の内容で設定をし、保存します。

「イベントのソースを選択」:「時間主導型」
「時間ベースのトリガーのタイプを選択」:「日付ベースのタイマー」
「時刻を選択」:任意(ここでは、毎朝9時〜10時の間に設定しています)

トリガー保存時にGoogle認証が要求されます。内容を確認し「Allow」を選択してください。

スクリプトの実行結果

スクリプトが実行されるとスプレッドシートは以下のようになります。

また、トリガーが正常に動いていることも確認できました。

最後に

今回は Google App Script(GAS) を使ってGoogleグループの一覧を取得し、スプレッドシートに自動で表示するしくみを試してみました。Googleグループは多くの企業で利用されているサービスかと思いますので、参考にしてもらえると嬉しいです。