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の扱いやすさを思い出します。)
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Youtube動画のダウンロード
Youtubeにアップロードした動画のダウンロード方法です。 以前はこんな機能が …
-
-
WordPressにログインを強制して記事ごとのアクセス制限もする
WordPressを限定された組織内で使いたいとした場合に下記を実現したいと思い …
-
-
chromium OS をインストールするためのUSBをMacで作る
別にChromeBookを購入するお金をけちるわけではないのですが。 chrom …
-
-
Chrome リモートデスクトップを使ってみる
自宅のMacをリモートで操作したい 外出用PCはWindows 8 とLinux …
-
-
GoogleAppsScriptを使ってGmailの本文を解析してSpreadSheetにエクスポートする
GoogleAppsScriptを使ってGmailの本文を解析してSpreadS …
-
-
GoogleAppsScriptを使ってGmailをSpreadSheetにエクスポートする
GoogleAppsScriptを使ってGmailをSpreadSheetにエク …
-
-
Google関連のAPIを試すためのGoogleSiteを作ってみました
組み込み機能で出来る事は組み込み機能で と思いまして、Googleサイトを試験的 …
-
-
言語スパムのアクセスをAnalyticsで除外した(2017/1/9現在)
Analyticsの言語に見慣れないのが出てたのでフィルタで除外対応。 Vita …
-
-
RedmineにGoogleAppsアカウントでログイン出来るようにする
RedmineのログインをGoogleアカウントで出来るように[redmine_ …
-
-
Davinci Resolveで本編動画とは別にTwitter動画を作る
Twitter動画の時間 Youtubeでオンライン勉強会のデモ動画をアップして …