Workato:Google WorkspaceのGoogleグループを作成する


はじめに

Google Workspaceを利用している組織においては、ユーザーのプロビジョニングや、Googleグループの作成やユーザー追加を自動化したい要望があるかと思います。Workatoを利用すると、ユーザーのプロビジョニングはもちろんのこと、Googleグループの作成も自動化することが出来ます。

今回は、Workatoを利用してGoogleグループの作成を行う手順について説明します。

前提知識

前提知識として、Google Workspace Admin SDK および Google Cloud Platformの理解が必要となります。また、一部はWorkatoのGoogle Workspaceコネクターではなく、HTTPコネクターを利用して対応することになりますので、OAuth2による認証方法およびGoogle CloudにおけるOAuthによるAPIの利用方法について理解しておく必要があります。

なお、このページでは、Google WorkspaceおよびGoogle Cloud Platformの詳細に関する説明は行いません。(Workatoとの連携に必要な説明のみ行います)

必要な処理

WorkatoにおいてGoogleグループを作成するには、以下の処理が必要となります。

  • グループの作成
  • 作成したグループに対するオーナーの追加
  • グループの設定変更

利用するAPI

グループの作成にはDirectory APIを使用し、グループの設定変更にはGroup Setting APIを使用します。詳細は下記URLをご参照ください。

事前作業

Groups Settings APIの有効化(Google Cloud Platform)

Groups Settings APIを利用するには、Group Settings APIの有効化が必要となります。
Google Cloud PlatformのAPIライブラリで、Google Settings APIの有効化を行ってください。

OAuthクライアントIDの作成(Google Cloud Platform)

APIを利用して作成したグループの設定を参照したり編集するには、Group Settings APIを使用します。

Group Settings APIを利用するには、OAuthクライアントIDの作成が必要になります。

下記ページを参考にOAuthクライアントIDを作成します。

なお、Workato連携において個別に必要となる設定事項については下記を参照ください。

OAuth同意画面

スコープの追加

https://www.googleapis.com/auth/apps.groups.settings をスコープに追加します。

OAuth クライアントIDの作成

アプリケーションの種類は「ウェブアプリケーション」を選択し、承認済みのリダイレクトURIに https://www.workato.com/oauth/callback を追加します。

コネクションの作成

Google Workspaceコネクターの追加

1.Google Workspaceコネクターを追加ます。

2.「Connect」をクリックします。

3.Workatoに許可する情報を選択し、「Continue」をクリックします。

4.「Connect」が「Disconnect」になれば、接続完了です。

HTTPコネクターの追加

1.HTTPコネクターを追加します。

2.HTTPコネクターの設定を行います。設定後「Connect」をクリックします。

image.png

※以下に示す設定項目以外はデフォルトのままとします。

Authenticate Type

OAuth 2 (authorization code grant)

OAuth2 authorization URL

https://accounts.google.com/o/oauth2/v2/auth?response_type=code&scope=https://www.googleapis.com/auth/apps.groups.settings&access_type=offline

OAuth2 token URL

https://accounts.google.com/o/oauth2/token

OAuth2 client ID

Google Cloud Platformの「OAuthクライアントID作成」時に発行されたクライアント ID

OAuth2 client secret

Google Cloud Platformの「OAuthクライアントID作成」時に発行されたクライアント シークレット

3.内容確認のうえ、「許可」をクリックします。

4.「Connect」が「Disconnect」になれば、接続完了です。

レシピの作成

次のようなレシピを作成します。

トリガー

任意のトリガーを定義します。

アクション

Step2

変数と値を定義します。

Step3

グループ作成のための定義を行います。

1.Google Workspace コネクターを選択します。

2.Custom actionを選択します。

3.Connectionを選択します。

4.次のとおり定義します。

Action name

任意の名称

Method

POST

Path

/admin/directory/v1/groups

Request type

JSON request body

Response type

JSON response

Input - Request body parameters

「Use JSON」をクリックし、以下のJSONをもとにスキーマを作成します。

{
   "email": "[email protected]",
   "name": "Sales Group",
   "description": "This is the Sales group."
}
Input - Data

各項目に対して、変数をデータピルより選択してセットします。

Response body

「Use JSON」をクリックし、以下のJSONをもとにスキーマを作成します。

{
  "kind": "",
  "etag": "",
  "id": "",
  "email": "",
  "role": "",
  "type": "",
  "status": ""
}

Step4

グループに対するオーナー追加のための定義を行います。

1.Step3の1~3と同様の操作を行います。

2.次のとおり定義します。

Action name

任意の名称

Method

POST

Path

/admin/directory/v1/groups/<group_email>/members
<group_email> は、データピルより変数を選択してセットします。

Request type

JSON request body

Response type

JSON response

Input - Request body parameters

「Use JSON」をクリックし、以下のJSONをもとにスキーマを作成します。

{
   "email": "[email protected]",
    "role": "MEMBER"
}
Input - Data

Emailに対して、変数をデータピルより選択してセットします。Roleには、 OWNER と入力します。

Response body

「Use JSON」をクリックし、以下のJSONをもとにスキーマを作成します。

{
   "kind": "directory#member",
   "id": "group member's unique ID",
   "email": "[email protected]",
   "role": "MEMBER",
   "type": "GROUP"
  }

Step5

グループの設定を変更します。

なお、Googleグループの仕様あるいは不具合により、 グループの設定変更を何らか行わないと、本来メンバー全員が参照可能なグループであっても、「すべてのグループ」に表示されない 場合があります。設定項目の変更が無い場合は、とりあえずデフォルト値をセットするのが良いでしょう。

1.HTTPコネクターを選択します。

2.「Send request」を選択します。

3.作成したコネクションを選択します。

4.次のとおり定義します。

Request name

任意の名称

Method

PATCH

Request URL

https://www.googleapis.com/groups/v1/groups/<group_email>
<group_email> は、データピルより変数を選択してセットします。

Request content type

JSON

Request body

必要な設定内容に応じて定義します。

{"WhoCanJoin":"CAN_REQUEST_TO_JOIN"}

※パラメータは以下を参照ください。

Request headers

以下のキーおよび値を追加します。

Header name: Content-Type
Value: application/json
Response content type

JSON

Encoding

UTF-8

Response body

「Use JSON」をクリックし、以下のJSONをもとにスキーマを作成します。

{
  "kind": "groupsSettings#groups",
  "email": "[email protected]",
  "name": "test-group",
  "description": "Test group",
  "whoCanJoin": "CAN_REQUEST_TO_JOIN",
  "whoCanViewMembership": "ALL_MEMBERS_CAN_VIEW",
  "whoCanViewGroup": "ALL_MEMBERS_CAN_VIEW",
  "whoCanInvite": "ALL_MANAGERS_CAN_INVITE",
  "allowExternalMembers": "false",
  "whoCanPostMessage": "ANYONE_CAN_POST",
  "allowWebPosting": "true",
  "maxMessageBytes": 26214400,
  "isArchived": "false",
  "archiveOnly": "false",
  "messageModerationLevel": "MODERATE_NONE",
  "replyTo": "REPLY_TO_IGNORE",
  "customReplyTo": "",
  "sendMessageDenyNotification": "false",
  "defaultMessageDenyNotificationText": "",
  "showInGroupDirectory": "true",
  "allowGoogleCommunication": "false",
  "membersCanPostAsTheGroup": "false",
  "messageDisplayFont": "DEFAULT_FONT",
  "includeInGlobalAddressList": "true",
  "spamModerationLevel": "MODERATE",
  "whoCanLeaveGroup": "ALL_MEMBERS_CAN_LEAVE",
  "whoCanContactOwner": "ANYONE_CAN_CONTACT",
  "whoCanAdd": "ALL_MANAGERS_CAN_ADD",
  "customFooterText": "",
  "includeCustomFooter": "false",
  "whoCanAddReferences": "NONE",
  "whoCanAssignTopics": "NONE",
  "whoCanUnassignTopic": "NONE",
  "whoCanTakeTopics": "NONE",
  "whoCanMarkDuplicate": "NONE",
  "whoCanMarkNoResponseNeeded": "NONE",
  "whoCanMarkFavoriteReplyOnAnyTopic": "NONE",
  "whoCanMarkFavoriteReplyOnOwnTopic": "NONE",
  "whoCanUnmarkFavoriteReplyOnAnyTopic": "NONE",
  "whoCanEnterFreeFormTags": "NONE",
  "whoCanModifyTagsAndCategories": "NONE",
  "favoriteRepliesOnTop": "true",
  "whoCanApproveMembers": "ALL_MANAGERS_CAN_APPROVE",
  "whoCanModerateMembers": "OWNERS_AND_MANAGERS",
  "whoCanModerateContent": "OWNERS_AND_MANAGERS",
  "whoCanAssistContent": "NONE",
  "whoCanModifyMembers": "OWNERS_AND_MANAGERS",
  "whoCanBanUsers": "OWNERS_AND_MANAGERS",
  "whoCanPostAnnouncements": "OWNERS_AND_MANAGERS",
  "whoCanDeleteTopics": "OWNERS_AND_MANAGERS",
  "whoCanDeleteAnyPost": "OWNERS_AND_MANAGERS",
  "whoCanLockTopics": "OWNERS_AND_MANAGERS",
  "whoCanMoveTopicsIn": "OWNERS_AND_MANAGERS",
  "whoCanMoveTopicsOut": "OWNERS_AND_MANAGERS",
  "whoCanApproveMessages": "OWNERS_AND_MANAGERS",
  "whoCanHideAbuse": "NONE",
  "whoCanMakeTopicsSticky": "NONE",
  "customRolesEnabledForSettingsToBeMerged": "false",
  "enableCollaborativeInbox": "false",
  "whoCanDiscoverGroup": "ALL_IN_DOMAIN_CAN_DISCOVER",
  "defaultSender": "DEFAULT_SELF"
}

動作確認

以上のレシピを実行し、グループが追加されたことを確認します。

参考情報