GASでGoogleWorkspaceのメーリングリストと、メーリングリストのメンバーを取得して一覧にするスクリプト

Google Workspace上のメーリングリスト一覧を整理するために。GoogleWorkspaceの管理機能だと1つずつダウンロードしていくことになるので、GAS(Google Apps Script)で出力するようにした。ベースになるGASのスクリプトは、Copilotに生成させて、それを少しだけ手直しさせた。GoogleのGeminiだと、ベースも作成できず。

Google Driveから、新規作成で、その他からApps Scriptを選択して、新しいプロジェクトを作り、コード.gsに下記のコードの部分をコピペ。実行するためにAPIを利用するので、サイドのサービスから「Admin SDK API」を追加する。このスクリプトの実行は、Google Workspaceの管理権限の中のGoogle Groupの管理権限があるユーザでないといけない。フル権限である必要はないけれど。

以下はコード。

// GASでGoogleWorkspaceのメーリングリストと、メーリングリストのメンバーを取得して一覧にするスクリプト
// 出力先は、Google spreadsheet
function myFunction() {
  listMailingListsAndMembers()
}

// 単機能なら、直接myFunctionの中にいれてもいい。
// または、呼び出さずに直接実行してもいい。
function listMailingListsAndMembers() {
  // Spreadsheetはルートフォルダ=マイドライブの直下に保存される。
  var sheet = SpreadsheetApp.create("Mailing Lists and Members").getActiveSheet();
  sheet.appendRow(["Mailing List", "Member"]);

  // AdminDirectory. を実施するためには、サービスから「Admin SDK API」を追加する。
  // 実行時に権限を承認する必要がある。また、実行ユーザがGoogleWorkspaceの該当する機能の権限を持っている
  var groups = AdminDirectory.Groups.list({customer: 'my_customer'}).groups;
  if (groups && groups.length > 0) {
    for (var i = 0; i < groups.length; i++) {
      var group = groups[i];
      var members = AdminDirectory.Members.list(group.email).members;
      var memberEmails = [];
      if (members && members.length > 0) {
        // メーリングリスト内のメンバーの数だけ繰り返し
        for (var j = 0; j < members.length; j++) {
          // メーリングリスト内のメンバーを、memberEmailsの配列に追加
          var member = members[j];
          memberEmails.push(member.email);
        }
      } else {
        memberEmails.push("No members");
      }
      // シートに書き込む
      sheet.appendRow([group.email].concat(memberEmails));
    }
  } else {
    sheet.appendRow(["No mailing lists found", ""]);
  }
}
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする