Google Apps Scriptでユーザの一括作成・削除をする【GAS】
検証用のGoogle Workspaceテナントを用意して、仮のユーザの一括作成や一括削除を行うことがままあります。手作業で数百人の検証用ユーザを作成・削除するのは手間が掛かりすぎます。
ということで、その際に利用するちょっとしたスクリプトを用意しました。
リンク
利用するスプレッドシート等
- ユーザ一括作成・一括削除スクリプト - Google Spreadsheet
- Admin SDK - Google Developer
サービスとして、Admin SDKを追加する必要があります。Admin SDKを利用するため、ユーザロールか?特権管理者等のロールを持つ管理者でなければ利用することは出来ません。
検証用なのでパスワードは固定で、changePasswordAtNextLoginについてはfalseでも良いのではないかとは思います。
ソースコード
ユーザ一括作成
userシートの内容を読み取って一括で作成していきます。AdminDirectory.Users.insertに対してメアドや姓名を渡して構築したものを使って追加していきます。
通常は、AdminDirectory.Users.insert(user)で良いのですが、競合アカウントがあった場合強制的に置き換えられる恐れがあるため、resolveConflictAccount:trueを追加しています。GWS側の設定に準拠するので、事前に設定を変えておく必要があります。
競合アカウントを検知するとそこで処理が止まります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
function makeAccount() { //スプレッドシートデータの取得 let sheet = SpreadsheetApp.getActiveSpreadsheet(); let ui = SpreadsheetApp.getUi(); //シートを取得 let ss = sheet.getSheetByName("user"); //データを取得する. let dataman = ss.getRange("A2:D").getValues(); let datalength = dataman.length; //連続でユーザ作成 let result; for(let i = 0;i<datalength;i++){ //レコードを一個取り出す let rec = dataman[i]; //空の場合はスルーする if(rec[0] == ""){ continue; } //ユーザ作成 result = addUser(rec[3], rec[2], rec[1]); } //処理終了 ui.alert(result) } //アカウントを作成し、デフォルトパスワードを返す関数 function addUser(mail, firstname, familyname) { try{ //アカウント作成メインルーチン let pass = String("ここにパスワードを入れる"); let user = { primaryEmail: mail, name: { givenName: firstname, familyName: familyname }, password: pass, changePasswordAtNextLogin: true }; user = AdminDirectory.Users.insert(user,{resolveConflictAccount:true}); return "作成完了。パスワードは" + pass + "です。"; }catch(e){ return e.message; } } |
図:競合アカウントを検出した場合のメッセージ
ユーザ一括削除
アカウントの削除は簡単で、AdminDirectory.Users.removeに対してメアドを渡すだけで削除することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
//ユーザ一括削除 function deleteAccount(){ //スプレッドシートデータの取得 let sheet = SpreadsheetApp.getActiveSpreadsheet(); let ui = SpreadsheetApp.getUi(); //シートを取得 let ss = sheet.getSheetByName("user"); //データを取得する. let dataman = ss.getRange("A2:D").getValues(); let datalength = dataman.length; //連続でユーザを削除する for(let i = 0;i<datalength;i++){ //レコードを一個取り出す let rec = dataman[i]; //ユーザ作成 let result = delUser(rec[3]); } //処理終了 ui.alert("作成終わったよ") } //アカウントを削除する function delUser(mail) { //アカウント作成削除ルーチン let result = ""; try{ result = AdminDirectory.Users.remove(mail); }catch(e){ result = e.message } return result; } |