GASを利用してGoogleグループの設定値を一覧化してみる

デフォルト状態だと、以下のような権限の形でGoogleグループが作成されてしまいますよね

この状態だと、外部からグループ宛のメッセージは届かないですし、ドメインに参加しているメンバーだったら誰でもそのMLの内容を閲覧できてしまいます。
評価や給与等プライバシーや機微情報のやりとりをしていた場合、実は全社公開で全部のやりとりが見えてしまっていたということになってしまいます。
グループを1つずつ開いて設定変更をするでもいいのですが、まずは現状把握をするためにスプレッドシートに書き出してみました。

以下のようなGASを書きました。(最初はサクッとChatGPTさんに書いてもらって手直ししました。)
以下のGASを実行するためには、サービスとして「AdminDirectory」「AdminGroupSettings」を追加しておく必要があります。もちろんグループを読み取れるユーザーで実行する必要があります。

function listAllGroupsSettings() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName("Groups Settings") || spreadsheet.insertSheet("Groups Settings");
  sheet.clear(); // 既存の内容をクリア
  const headers = ["Email", "Name", "Description", "whoCanPostMessage","Who Can Join", "Who Can View Membership", "Who Can View Group", "whoCanModerateMembers","whoCanLeaveGroup", "Allow External Members", "Is Archived"];
  sheet.appendRow(headers);

  const response = AdminDirectory.Groups.list({
    customer: 'my_customer',
    maxResults: 200, // 必要に応じて調整
  });

  const groups = response.groups;
  if (groups && groups.length > 0) {
    groups.forEach(function(group) {
      const groupSettings = AdminGroupsSettings.Groups.get(group.email);
      const row = [
        group.email,
        group.name,
        groupSettings.description,
        groupSettings.whoCanPostMessage,
        groupSettings.whoCanJoin,
        groupSettings.whoCanViewMembership,
        groupSettings.whoCanViewGroup,
        groupSettings.whoCanModerateMembers,
        groupSettings.whoCanLeaveGroup,
        groupSettings.allowExternalMembers,
        groupSettings.archiveOnly,
      ];
      sheet.appendRow(row);
    });
  } else {
    Logger.log('No groups found.');
  }
}

こちらを実行するとスプレッドシートに以下のように記録されていきます。

値の意味については公式ドキュメントを参照して確認してください。

問題があると思うグループについては、設定を変更していきましょう!

まとめ

当初AdminSDKだけで設定も取得できるだろうとか思ってやっていたのですが、AdminSDKだけでは取得できずAdminGroupSettingsも必要でした。
また、GAMを利用して出力しようかとも思ったのですが色々な人が簡単にみれるスプシにGASを利用して定期的に出力していたほうがいいなと思ったのでGASだけで完結できるやり方をしています。
グループ数が多くなってくると、時間がかかるようになってタイムアウトする可能性もあるのでそのあたりは適宜調整してください。
何気に気づいていない方もいるかもという気がしています。
全員にグループの内容が見えている場合、サービスにグループアドレスを利用して登録していたりすると、パスワード初期化等のメールもメンバー以外が閲覧できることになり、気づいたらパスワードが初期化されていた。などが起きるかもしれません。
必要なものはオープンのまま、制限をかけないとまずそう。というものは設定を変更してみてください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!