質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

297閲覧

【GAS】Googleグループ一覧とメンバー出力

shirogohan

総合スコア14

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2023/12/25 04:07

実現したいこと

GASでGoogleグループの一覧とそのメンバーを一括出力したい

発生している問題

下記サイトに記載のコードを使用させていただいていますが、メンバーのみが出力されません。

その他のグループアドレス、グループ名、メンバー数は表示されています。
エラーなどは出ていません。
どなたかお力をお貸しいただけますと幸いです。

https://gist.github.com/W-Yoshida/bd970dd76044ecfe317375b228bb96dc

該当のソースコード

var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; //実行メニューを作成 function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu("GAS実行"); menu.addItem("Googleグループメンバー出力", "exportGoogleGroupMembers"); menu.addToUi(); } function exportGoogleGroupMembers() { //対象ドメイン var domainName = 'example.com'; //取得するグループの最大数(デフォルトは200) var maxResults = 500; //シートをクリア sheet.clear(); var values = []; //ヘッダー追加 values.push([ "メールアドレス", "グループ名", "説明", "メンバー数", "メンバー", ]); //グループ一覧の取得 var groupsList = AdminDirectory.Groups.list({domain: domainName, maxResults: maxResults}); if(groupsList) { for(var i = 0; i < groupsList.groups.length; i++){ var value = []; //グループの基本情報を取得 value.push(groupsList.groups[i].email); //メールアドレス value.push(groupsList.groups[i].name); //グループ名 value.push(groupsList.groups[i].description); //説明 value.push(groupsList.groups[i].directMembersCount); //メンバー数 var strMembers = ''; //グループのメンバーを取得 var members = AdminDirectory.Members.list(groupsList.groups[i].email).members; if(members != null) { for (var j = 0; j < members.length; j++){ //社外ドメインのアドレスの場合、ドメイン部以外はマスクする if(members[j].email.match(/@example.com/)){ strMembers += members[j].email + '\r\n'; }else{ var splitEmail = members[j].email.split('@'); strMembers += '*****@' + splitEmail[1] + '\r\n'; } } } value.push(strMembers.trim()); values.push(value); } //取得したデータをスプレッドシートにセット sheet.getRange(1, 1, groupsList.groups.length + 1 , 5).setValues(values); sheet.getRange(1, 1, groupsList.groups.length + 1 , 5).setVerticalAlignment('top') } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

"グループアドレス"ではなくて、"メールアドレス"ですかね。

現象としては、以下の出力項目があり、”メンバー"(値は、Groupに所属するメンバーのemail)が空欄で表示されるという理解をしました。

"メールアドレス", "グループ名", "説明", "メンバー数", "メンバー",

私の手元の環境で、「該当のソースコード」のコードのexample.com部分だけ編集して実行してみたところ"メンバー"は正しく表示されている様でした。

「Admin SDK API(AdminDirectory)」の権限が正しく設定されているとすれば、可能性として高いと思ったのは、グループは存在しているがメンバー数0の場合です。その場合には空欄になるようです。

以下の事も試してみると良いと思います。

  1. Logger.log()を使って変数の中身を確認する。AppScriptのExecutionsから該当のログを検証する。
  2. 対象のグループ一覧をAPIで直接確認する。参考

投稿2023/12/26 00:33

taketaku

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問