LoginSignup
2
4

More than 5 years have passed since last update.

G Suiteに登録されているメーリングリストと、中に入っているユーザーの一覧を取得する

Last updated at Posted at 2018-11-18

背景

全容はまた書きたいのですが、色々あってメーリングリストに含まれているユーザーを全量把握する必要が出てきた。
ネット検索したら出てくるけど、何故かうまく行かないので結局自分で書きました。

対応

スプレッドシートのスクリプトエディタに書いてください。
あとドメイン名は会社で使っているドメイン名を入れてください。

getGroupUser
//onOpenで書く事でスプレッドシート読み込み時に実行され、ツールバーへ「管理」ー「グループアドレス一覧取得」とメニューが表示されるようになる。
function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu("管理")
  .addItem("グループアドレス一覧取得", "GetGroupUser")
  .addToUi();
}

//以下実際に実行される処理
function GetGroupUser()
{
  // アクティブなシート取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ここにスプレッドシートのシート名を入力');

  // グループ一覧の取得
  var groups = AdminDirectory.Groups.list({
    domain: 'ここはドメイン名を入力してください'
  });

  if(groups) {
    var rows = [];
    var rowcount = 0;

    // ヘッダ行
    rows.push(["GroupAddress", "Description", "Name", "DirectMembersCount", "UserAddress"]);

    // データ行
    for(var i = 0; i < groups.groups.length; i++){           
      // グループに所属するメンバーの取得
      var cols = [];
      var members = AdminDirectory.Members.list(groups.groups[i].email).members    
      if (members) {
        var memlen = members.length;
      }else{
        var memlen = 1;
      }                   

      //メーリングリストにメンバーが含まれている場合の処理
      for (var j = 0; j < memlen; j++){
        cols.push(groups.groups[i].email);
        cols.push(groups.groups[i].description);
        cols.push(groups.groups[i].name);
        cols.push(groups.groups[i].directMembersCount);

        //メンバーが含まれていなかった場合は
        if(members){
          cols.push(members[j].email);
        }else{
          cols.push("");          
        }
        // 行追加
        rows.push(cols);
        var cols = [];         
        // 最終的な行数計算
        rowcount = rowcount + 1;
      }
    }   
    // 書き込み
    sheet.getRange(1, 1, rowcount +1 , 5).setValues(rows);
  } 
}

こんな感じでメニューとして表示されます。
image.png

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4