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
関連記事
-
C#でOpenWeatherMap APIを使って天気情報を取得する
C#でOpenWeatherMapAPIを使って現在の天気を取得してみました。 …
-
sitemap.xml(sitemap-misc.xml)とrobots.txtを設置する
起きたら結構な雨でしたので、とりあえずサーバのエラーログを眺めていると、goog …
-
Google関連のAPIを試すためのGoogleSiteを作ってみました
組み込み機能で出来る事は組み込み機能で と思いまして、Googleサイトを試験的 …
-
Mac OS X Yosemite にnode.js + mongodb 環境を作る
node.jsインストール nodejs.orgサイトで「INSTALL」ボタン …
-
Google Apps ScriptでAdmin SDK Directory Serviceを使ってユーザの最終ログイン情報一覧を出力する
GoogleAppsで使わなくなったアカウントを確認する方法として、最終ログイン …
-
使っていないCSSセレクタをChrome DevToolsのCoverageで確認しました
使っていないCSSセレクタを確認しようと、Chrome DevToolsのCov …
-
Google Apps Scriptのマニフェストファイルの編集
こちらの配信ライブカレンダーの仕組みを作っているときに、久しぶりにGoogle …
-
「Cloud Vision Api & Tensorflow勉強会」に行ってきました
「Cloud Vision Api & Tensorflow勉強会」に行 …
-
Googleナレッジパネルの申請が承認されました
今年の4/13に「Googleナレッジパネルの認証を受けるために申請してみた」が …
-
trafficbot.liveからのスパムアクセス
ある日のGoogleAnalyticsで、5,000を超えるページビューがtra …