📑

Cloud IdentityでGoogleグループからメンバーを追加・削除するGoogle Apps Scriptを書いた

2022/12/04に公開

Google Workspace(旧 G Suite)でGoogleグループ(以下、グループ)にユーザー追加や削除を自動で行いたい場合があります。例えば、Slackワークフローで入社時に必要なグループ名もしくは部署名を入れたら適切なグループに入れたり、スプレッドシートからメンバーのリストアップや追加・削除をできるようにするといったケースがあります。

GASなどのスクリプトからグループへのメンバー追加や削除をする場合、Google Workspace Admin SDKのDirectory APIを使うのと楽です。次にスクリプト例を載せます。

function myFunction() {
  const userEmail = "ohsawa@jicoman.info";
  const groupEmail = "all-member@jicoman.info";

  // メンバーリストの取得
  var members = AdminDirectory.Members.list(groupEmail).members;
  console.log(members);

  // メンバーをGoogleグループに追加
  AdminDirectory.Members.insert({email: userEmail}, groupEmail);
  
  // Googleグループからメンバーを削除
  AdminDirectory.Members.remove(groupEmail, userEmail);
}

しかし、Directory APIはAdmin権限を必要とするAPIで、Google WorkspaceにおいてもAdmin権限が必要となるため、内部統制などの関係で権限を許可されない場合があります。

代替手段としてCloud Identity APIを使うことでグループへのメンバー追加・削除ができるため、その方法について紹介します。

Cloud Identityとは

Googleが提供しているIDaaS(Identity as a Service)です。Google WorkspaceからID管理に関する機能を抜き出したものです。無料で使えるCloud Identity Free Editionも提供されています。私も個人アカウントでGCPでの権限を検証するときに使っています。

参考リンク

GASスクリプト

Cloud Identity APIでGoogleグループのメンバーリストの取得、メンバー追加・削除をするGoogle Apps ScriptはGistで公開しています。

このままコピペして使ってもいいですし、ライブラリとして保管することで他のGASからも利用できます。appsscript.jsonは次のように設定してください。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {},
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/userinfo.profile",
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/cloud-identity.groups"
  ]
}

次に利用例を載せます。

function myFunction() {
  const userEmail = "ohsawa@jicoman.info";
  const groupEmail = "all-member@jicoman.info";

  // メンバーリストの取得
  var members = listMembers(groupEmail);
  console.log(members);

  // メンバーをGoogleグループに追加
  insertMember(userEmail, groupEmail);

  // Googleグループからメンバーを削除
  deleteMember(userEmail, groupEmail);
}

Cloud Identity APIの有効化

上記スクリプトを実行するために、GCPプロジェクトを用意してCloud Identity APIを有効化する必要があります。Cloud Identity APIは以下のコマンドで有効化できます。

$ gcloud services enable cloudidentity.googleapis.com

次にこのGCPプロジェクトのプロジェクト番号を取得して、GASの設定から「Google Cloud Platform(GCP)プロジェクト」にプロジェクト番号を入力してください。

gas-gcp-project-number

利用時の注意

このGASを実行する際の実行者(Cloud Identity上のユーザー)の権限に影響されます。グループへの追加や削除をする場合、グループのオーナー権限を有している必要があります。共有設定しているスプレッドシート上からGASを実行する場合、実行者の権限によって実行できない場合があります。

Discussion