Google Apps ScriptでAdmin SDK Directory Serviceを使ってグループメンバー情報を出力する
2020/09/07
GoogleAppsのGoogleGroupをメーリングリストとして使っている人がほとんどだと思うのですが、メンバーの一覧って見る画面がないので、いちいちGroupのメンバーを開くか、他のファイルで管理したりって事で、棚卸しする時に面倒なので、今現在どのメールアドレスがメンバーになっているのかを出力する事はGoogle Apps Scriptで簡単に出来ないかと思って調べてみたら簡単に出来たので記載します。
Admin SDK Directory Serviceを有効にする
今時点では試験運用中のGoogleの拡張サービスなので、
スクリプトエディタで[リソース]-[Googleの拡張サービス]で「Admin Directory API」をONにする。
同じ画面の下にリンクで「Googleデベロッパーコンソール」があるのでそこからGoogleデベロッパーコンソールでも、「Admin SDK」を有効にしておく。
グループメンバーを確認する方法
下のコードをSpreadSheetの[ツール]-[スクリプトエディタ]に書いて、実行したら、とりあえずSpreadSheetに今の設定が書き出せます。
ドメインとかメールアドレスとかは編集して自己責任で参考にしてください。
詳細は公式のAdmin SDK Directory Serviceのページを確認してください。
簡単に説明します。
「page = AdminDirectory.Groups.list~」で指定ドメインのGoogleGroupのリストをpage変数に代入します。
で、「page.groups」をループでまわして、
「var members = AdminDirectory.Members.list(group.email).members」でグループメンバーを代入します。
で、次はメンバーをループでまわしながら、
「user = AdminDirectory.Users.get(member.email)」でユーザ情報を代入します。
※ user.name.fullNameの漢字名が必要だったため。
※ ドメイン外のメールアドレスが含まれる事を考慮したかったのですが、「AdminDirectory.Users.get」でエラーになる事しか分からなかったので、try~catchにしてます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
function listAllGroupsMembers() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var k = 2; var pageToken, page; do { page = AdminDirectory.Groups.list({ domain: 'xxxxxx.xx.xx', maxResults: 300, pageToken: pageToken }); var groups = page.groups; if (groups) { for (var i = 0; i < groups.length; i++) { var group = groups[i]; var members = AdminDirectory.Members.list(group.email).members; if (members){ for (var l = 0;l < members.length;l++){ var member = members[l]; if (sheet.getRange(k,2) + sheet.getRange(k,3) == group.email + member.email){ }else{ sheet.getRange(k,1).setValue(group.name); sheet.getRange(k,2).setValue(group.email); sheet.getRange(k,3).setValue(member.email); var user; try{ user = AdminDirectory.Users.get(member.email); if (user){ sheet.getRange(k,4).setValue(user.name.fullName); } }catch(e){ Logger.log(e.message); } k ++; } } } } } else { Logger.log('グループがありません'); } pageToken = page.nextPageToken; } while (pageToken); MailApp.sendEmail("xxxx@xxxxx.xx.xx", "処理完了", "listAllGroupMembersの処理が完了しました。"); } |
(ディレクトリのAPIに触れていると、names.nsfの扱いやすさを思い出します。)
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Google Apps ScriptでAdmin SDK Directory Serviceを使ってユーザの最終ログイン情報一覧を出力する
GoogleAppsで使わなくなったアカウントを確認する方法として、最終ログイン …
-
-
ライブ配信のカレンダーをGoogle Apps Scriptとかで作りました
ライブ配信がまとまっているカレンダー欲しいなあと思いまして。 まとめようと思いま …
-
-
ホームページ、自作サイトにアメブロの新着情報を掲載する
MagipieRSSを使用 なので下記サイトでダウンロード http://mag …
-
-
redmine_omniauth_googleプラグインをRedmine3.0.0で動くようにする
redmine_omniauth_googleプラグインをインストールしたところ …
-
-
自転車でナビ+記録出来るアプリ+ホルダー+バッテリー試してみた
目的 記録を蓄積して振り返りやる気を継続する 飽きないように単調にならないように …
-
-
GoogleAppsScriptを使ってGmailをSpreadSheetにエクスポートする
GoogleAppsScriptを使ってGmailをSpreadSheetにエク …
-
-
chromium OS をインストールするためのUSBをMacで作る
別にChromeBookを購入するお金をけちるわけではないのですが。 chrom …
-
-
Googleカレンダーの予定をV3 APIでPHPからJSONを取得してWebページに表示する
Googleカレンダーを使って管理しているライブスケジュールを日付によって、 未 …
-
-
WordPressの記事を公開日時に関係なくソート順を変更する
PostMash Customを使う WordPressのプラグインでPostM …
-
-
Twilio APIでOpenWeatherMap APIで取得した天気情報を毎朝モーニングコールする
OpenWeatherMap APIのJsonから取得した気温と天気の情報を、T …