Gsuiteの退職処理の自動化で、GoogleのAPIの使い方でつまづいたので備忘に
#やること
・退職者のパスワードを変更
・Googleグループから退職者を削除
#退職者のパスワードを変更
ランダムパスワードの生成
変数「S」で指定した文字列から「N」個抜き出してパスワードを作成します。
Code.js
const S="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
const N=10;
const password = Array.from(Array(N)).map(()=>S[Math.floor(Math.random()*S.length)]).join('');
Admin SDK APIでユーザーのパスワードを変更
passwordに変更したいパスワードを
userKeyにパスワードを変更するユーザーのアドレスを入れる。
Code.js
const userKey = "パスワードを変更するユーザーのメールアドレス"
const payload = {"password": password};
AdminDirectory.Users.update(JSON.stringify(payload),userKey);
全体はこんな感じ
Code.js
function myFunction(){
const S="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
const N=10;
const password = Array.from(Array(N)).map(()=>S[Math.floor(Math.random()*S.length)]).join('');
const userKey = "パスワードを変更するユーザーのメールアドレス"
const payload = {
"password": password,
};
AdminDirectory.Users.update(JSON.stringify(payload),userKey);
};
#Googleグループから退職者を削除
userKeyで指定したユーザーが所属しているグループの一覧が、
json形式でビャッと出てきます。
Code.js
AdminDirectory.Groups.list({userKey:"ユーザーのアドレス"});
指定したグループから指定したユーザーを削除します。
Code.js
AdminDirectory.Members.remove("グループのアドレス","ユーザーのアドレス")
取得したリストからグループのメールアドレスを取り出して、
ユーザーをグループから削除します。
グループのメールアドレスはgroupList.groups.emailに入っています。
Code.js
const groupList = AdminDirectory.Groups.list({userKey:"ユーザーのアドレス"});
for (let i = 0; i < groupList.groups.length; i++) {
const group = groupList.groups[i];
AdminDirectory.Members.remove(group.email,"ユーザーのアドレス");
};
うちでは退職者のGsuiteアカウントは3か月保管するので、
ついでに退職者用のグループに追加します。
Code.js
AdminDirectory.Members.insert({email:"ユーザーのアドレス",role:"MEMBER"},"退職者用のグループのアドレス");