【Google Apps Script】メーリングリストから所属するメンバーのアドレスとフルネームをスプレッドシートに表示する
概要
GoogleAppsのグループ(メーリングリスト)に追加されているメンバーは、
管理コンソールから取得することが出来るのですが、取得できるのはアドレスのみです。
出来ればユーザの氏名も一緒に表示したい。。。という場合に。
スプレッドシートのA2セルに対象のグループ入力し、
メニューの「メーリングリスト」→「メンバー表示」をクリックすると、B列にメールアドレス、C列に氏名が表示されるようにします。
A5にメーリングリストの人数を表示します。
メニューはOnOpenでスプレッドシートを開いた時に表示されるようにします。
ListGroupMembers
function AddMenu(){ var ss = SpreadsheetApp.getActiveSpreadsheet() var sheet = ss.getActiveSheet(); var menus = [{name: 'メンバー表示', functionName: 'ListGroupMembers'}]; ss.addMenu('メーリングリスト', menus); } function ListGroupMembers() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('シート名'); sheet.getRange('B2:D1000').clear(); var groupEmail = sheet.getRange(2,1).getValue(); var group = GroupsApp.getGroupByEmail(groupEmail); var users = group.getUsers(); if (users) { for (var i = 0; i < users.length; i++) { sheet.getRange(i+2,2).setValue(users[i]); var userEmail = sheet.getRange(i+2,2).getValue(); var user = AdminDirectory.Users.get(userEmail); sheet.getRange(i+2,3).setValue(user.name.fullName); } } else { Logger.log('No users found.'); } sheet.getRange(5,1).setValue(users.length); }
処理内容
GroupAppクラスのgetGroupByEmailを使って、
セルに入力したグループのメールアドレスからグループオブジェクトを取得。
グループオブジェクトに対してgetUsersで、対象グループのメンバーのメールアドレス一覧を取得します。
メンバーのメールアドレス一覧を取得できたら、forでメールアドレスをB列に設定していきます。
その際にユーザの氏名をメールアドレスの情報を元にAdminDirectory.Users.getで取得するのですが、
そのまま値を呼び出すとエラーが出るため、先に値を設定したB列のセルからユーザのメールアドレスを変数として取得しています。
一番最後でメーリングリストにいるメンバーの数を出しています。