Google WorkspaceのユーザーOU変更をGoogle Apps Scriptで行った話

数百人程度のGoogle Workspaceで、ユーザーのOU変更を行う必要があった。 最初はRubygoogle-apis-admin_directory_v1 gemでの変更を検討し、実際に検証を行った。 user.update!(org_unit_path: new_ou_path)で組織部門(OU)の更新をかけても、API上では変更が反映されているように見えるが、管理画面 (admin.google.com) からは組織部門(OU)の更新が確認できなかった。

rubygems.org

そこで、Google Apps Scriptを利用してユーザーのOU変更を行う方針に変更した。 ほぼ以下のサンプル通りでほぼ動く。Rubyでやるときに必要だったGOOGLE_APPLICATION_CREDENTIALSの設定や、認証まわりの設定、APIのスコープの設定などがまるっと要らなくなっている。 その代わり、紐づくGCPのProjectを設定したり、利用するサービスとしてAdminDirectoryの追加が必要だった。

developers.google.com

スプレッドシートからの読み取りや、例外処理など細々とした処理を除けば、一人のユーザーのOU変更に必要なコードはこんな感じだった。名前から分かる通りemailは、ユーザーのメールアドレスが入っている。

user = AdminDirectory.Users.get(email);
AdminDirectory.Users.update({orgUnitPath: ou_path});

大体の問題解決はRubyで行ってきたが、今回は珍しくRubyでの手段が絶たれたのでGoogle Apps Scriptを試してみてうまくいった事例だった。Google Apps ScriptはJavascriptっぽい感じなのだが、少しは今回を機に仲良くなれるといいなと思っている。