【G Suite】APIからグループのアクセスタイプを含む詳細情報を取得する

【G Suite】APIからグループのアクセスタイプを含む詳細情報を取得する

こんにちは、IT推進室の杉浦です。

Googleスプレッドシートでグループ一覧を取得した前回の記事は Admin Directory API を利用してグループ一覧の取得を行いそれとをスプレッドシートに書き出すものでした。

一覧の項目としては グループ名 / 説明 / メールアドレス / メンバー数 / グループメンバー の5項目を取得してスプレッドシートに書き出したわけですが、やはりこれだけではグループ情報が足りません。
例えばグループの棚卸をしたいといった場合、メンバーの他にアクセスタイプ等が正しく設定されているかの確認が必要となります。グループ一覧を取得するのであればそれらの情報も欲しいですよね。

そこで今回の内容は前回のグループ一覧に追加でグループ詳細を取得したいという内容にしたい・・・ところでしたが、まずは Groups Settings API で取得できる項目のうちアクセスタイプ等の設定項目についてまとめることにしました。

以下のようなグループ設定の状態をAPIから取得したい。

準備

今回はグループの詳細情報を取得するために Groups Settings API を利用します。GASを利用する場合はAPIの有効化と承認が必要になります。

今回の記事ではスプレッドシートの書き出しまで行いませんのでAPIの動作確認と取得されてくる項目を確認したいだけであれば Groups Settings APIリファレンス のページから Try this API を利用すると簡単に確認できて便利です。

APIからの取得例

以下が、実際に Groups Settings API からグループ情報の取得を行ったコードと結果です。

//グループ詳細取得
function GetGroupSettings ()
{
  //対象グループのメールアドレスを指定します。
  var groupSettings = AdminGroupsSettings.Groups.get('access-level-test@classmethod.jp');
  
  var keys = Object.keys(groupSettings).sort();
  for(var i in keys) {
    Logger.log(keys[i] + ' : ' + groupSettings[keys[i]]);
  }
}

実行結果

大量のプロパティが返ってきます。これ見ただけでは設定状態がどうなっているのかさっぱりわかりません。また、数がかなり多いですがAPI更新のためとプロパティの統廃合によって利用が非推奨となっているものも含まれています。

 
allowExternalMembers : false
allowGoogleCommunication : false
allowWebPosting : true
archiveOnly : false
customFooterText : 
customReplyTo : 
customRolesEnabledForSettingsToBeMerged : false
defaultMessageDenyNotificationText : 
description :  グループのアクセスレベルの設定の検証のために作成されました
email : access-level-test@classmethod.jp
enableCollaborativeInbox : false
favoriteRepliesOnTop : true
includeCustomFooter : false
includeInGlobalAddressList : true
isArchived : false
kind : groupsSettings#groups
maxMessageBytes : 26214400
membersCanPostAsTheGroup : false
messageDisplayFont : DEFAULT_FONT
messageModerationLevel : MODERATE_NONE
name : access-level-test
replyTo : REPLY_TO_IGNORE
sendMessageDenyNotification : false
showInGroupDirectory : true
spamModerationLevel : MODERATE
whoCanAdd : ALL_MANAGERS_CAN_ADD
whoCanAddReferences : NONE
whoCanApproveMembers : ALL_MANAGERS_CAN_APPROVE
whoCanApproveMessages : OWNERS_AND_MANAGERS
whoCanAssignTopics : NONE
whoCanAssistContent : NONE
whoCanBanUsers : OWNERS_AND_MANAGERS
whoCanContactOwner : ANYONE_CAN_CONTACT
whoCanDeleteAnyPost : OWNERS_AND_MANAGERS
whoCanDeleteTopics : OWNERS_AND_MANAGERS
whoCanDiscoverGroup : ALL_IN_DOMAIN_CAN_DISCOVER
whoCanEnterFreeFormTags : NONE
whoCanHideAbuse : NONE
whoCanInvite : ALL_MANAGERS_CAN_INVITE
whoCanJoin : CAN_REQUEST_TO_JOIN
whoCanLeaveGroup : ALL_MEMBERS_CAN_LEAVE
whoCanLockTopics : OWNERS_AND_MANAGERS
whoCanMakeTopicsSticky : NONE
whoCanMarkDuplicate : NONE
whoCanMarkFavoriteReplyOnAnyTopic : NONE
whoCanMarkFavoriteReplyOnOwnTopic : NONE
whoCanMarkNoResponseNeeded : NONE
whoCanModerateContent : OWNERS_AND_MANAGERS
whoCanModerateMembers : OWNERS_AND_MANAGERS
whoCanModifyMembers : OWNERS_AND_MANAGERS
whoCanModifyTagsAndCategories : NONE
whoCanMoveTopicsIn : OWNERS_AND_MANAGERS
whoCanMoveTopicsOut : OWNERS_AND_MANAGERS
whoCanPostAnnouncements : OWNERS_AND_MANAGERS
whoCanPostMessage : ANYONE_CAN_POST
whoCanTakeTopics : NONE
whoCanUnassignTopic : NONE
whoCanUnmarkFavoriteReplyOnAnyTopic : NONE
whoCanViewGroup : ALL_MEMBERS_CAN_VIEW
whoCanViewMembership : ALL_IN_DOMAIN_CAN_VIEW

アクセスタイプ

ここ注目したいのは、やはりアクセスタイプの状態です。必ず確認したいポイントの一つだと思います。

以下によく利用するであろうプロパティと設定値をまとめました。 項目の概要については公式ヘルプ グループのアクセス設定を編集する を参照ください。

アクセス設定

オーナーに連絡 whoCanContactOwner

プロパティ名 設定値 説明
whoCanContactOwner ALL_MANAGERS_CAN_CONTACT グループの管理者
ALL_MEMBERS_CAN_CONTACT グループのメンバー
ALL_IN_DOMAIN_CAN_CONTACT 組織全体
ANYONE_CAN_CONTACT 外部

※執筆時点(2019/06/16)でのリファレンスには"グループのオーナー"に対する設定値が確認できませんでした。

メンバーを表示 whoCanViewMembership

プロパティ名 設定値 説明
whoCanViewMembership ALL_OWNERS_CAN_VIEW グループのオーナー
ALL_MANAGERS_CAN_VIEW グループの管理者
ALL_MEMBERS_CAN_VIEW グループのメンバー
ALL_IN_DOMAIN_CAN_VIEW 組織全体

トピックを表示 whoCanViewGroup

プロパティ名 設定値 説明
whoCanViewGroup ALL_OWNERS_CAN_VIEW グループのオーナー
ALL_MANAGERS_CAN_VIEW グループの管理者
ALL_MEMBERS_CAN_VIEW グループのメンバー
ALL_IN_DOMAIN_CAN_VIEW 組織全体
ANYONE_CAN_VIEW 外部

投稿を公開 whoCanPostMessage

プロパティ名 設定値 説明
whoCanPostMessage NONE_CAN_POST 投稿不可
ALL_OWNERS_CAN_POST グループのオーナー
ALL_MANAGERS_CAN_POST グループの管理者
ALL_MEMBERS_CAN_POST グループのメンバー
ALL_IN_DOMAIN_CAN_POST 組織全体
ANYONE_CAN_POST 外部

※archiveOnly= "false"の場合、whoCanPostMessageをNONE_CAN_POSTに更新するとエラーになります。
※archiveOnlyが「true」から「false」に戻されると、whoCanPostMessagesはALL_MANAGERS_CAN_POSTに設定されます。

メンバーの設定

メンバーを管理 whoCanModerateMembers

プロパティ名 設定値 説明
whoCanModerateMembers OWNERS_ONLY グループのオーナー
OWNERS_AND_MANAGERS グループの管理者
ALL_MEMBERS グループのメンバー

プロパティ設定例

以下のように設定値が最小の状態のグループに対して試しに設定を実施してみます。

設定値

{
  "whoCanContactOwner": "ANYONE_CAN_CONTACT",  //オーナーに連絡
  "whoCanViewMembership": "ALL_IN_DOMAIN_CAN_VIEW", //メンバーを表示
  "whoCanViewGroup": "ALL_MEMBERS_CAN_VIEW", //トピックを表示
  "whoCanPostMessage": "ANYONE_CAN_POST", //投稿を公開
  "archiveOnly": "false",  //whoCanPostMessageの値による
  "whoCanModerateMembers": "OWNERS_AND_MANAGERS" //メンバーを管理
}

結果

最後に

今回はグループ一覧取得時に同時にアクセスタイプについても項目に追加したい考えから、 Groups Settings API で取得できるプロパティのうちアクセスタイプの設定項目についてまとめてみました。

次回は今回の内容を踏まえて、グループ一覧取得した時にアクセスタイプの状態を同時に取得しグループ管理をする場合に各グループのアクセスタイプの状態まで確認できる内容の記事を書く予定です。

Googleグループは時折アップデートによって設定項目が変化することがあります。Google グループの設定に関する変更について(2019 年 5 月 6 日施行) 古いグループなどは設定内容が現状と合わなくなることがあります。その為こういった試みでグループ管理が楽になると良いなと思います。

次回、またよろしくお願いします。