Cloud IdentityでGoogleグループからメンバーを追加・削除するGoogle Apps Scriptを書いた
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での権限を検証するときに使っています。
参考リンク
- 完全無料のIDaaS!?Google Cloud Identity Freeを試してみる | by @okash1n | Hi Im okash1n
- 無料で使えるGoogleのIDaaS「Google Cloud Identity Free Edition」を利用してみた | DevelopersIO
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を実行する際の実行者(Cloud Identity上のユーザー)の権限に影響されます。グループへの追加や削除をする場合、グループのオーナー権限を有している必要があります。共有設定しているスプレッドシート上からGASを実行する場合、実行者の権限によって実行できない場合があります。
Discussion