Bulk-gebruikersbeheer automatiseren met Apps Script bespaart Workspace-beheerders veel tijd bij de onboarding van nieuwe medewerkers. In plaats van accounts een voor een aan te maken in de Admin-console, lees je een spreadsheet en maak je in een keer tientallen accounts aan. In dit artikel leer je de Admin SDK Directory-service gebruiken voor het aanmaken, wijzigen en uitschakelen van accounts.
De Admin SDK Directory-service activeren
Voor gebruikersbeheer gebruik je de Admin SDK Directory-service. Die is niet standaard beschikbaar; je activeert hem als geavanceerde service. Klik in de editor op het plus-icoon naast Services en voeg Admin SDK API (AdminDirectory) toe. Je hebt een Workspace-beheerdersaccount nodig en de Admin SDK moet voor je domein zijn ingeschakeld.
Verregaande rechten, behandel met zorg
Scripts met de Admin SDK kunnen accounts aanmaken, wachtwoorden wijzigen en gebruikers verwijderen voor je hele organisatie. Beperk wie deze scripts mag draaien, log elke actie en test eerst op een testaccount. Een fout in een loop kan honderden accounts tegelijk raken.
Gebruikers aanmaken vanuit een spreadsheet
Zet de nieuwe medewerkers in een spreadsheet met kolommen voor voornaam, achternaam, e-mail en tijdelijk wachtwoord. Lees die rijen en maak per rij een account aan:
function maakGebruikers() {
const blad = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Nieuwe medewerkers');
const data = blad.getRange(2, 1, blad.getLastRow() - 1, 4).getValues();
data.forEach(function(rij, i) {
const [voornaam, achternaam, email, wachtwoord] = rij;
if (!email) return;
try {
AdminDirectory.Users.insert({
primaryEmail: email,
name: { givenName: voornaam, familyName: achternaam },
password: wachtwoord,
changePasswordAtNextLogin: true
});
blad.getRange(i + 2, 5).setValue('aangemaakt');
} catch (fout) {
blad.getRange(i + 2, 5).setValue('fout: ' + fout.message);
}
});
}
De optie changePasswordAtNextLogin: true dwingt de medewerker bij de eerste login een eigen wachtwoord te kiezen. De try-catch per rij zorgt dat een fout op een enkele rij de rest van de batch niet stopt.
Admin SDK referentie
De volledige structuur van het Users-object, met alle velden zoals orgUnitPath, suspended en aliases, staat in de Admin SDK Directory-documentatie op developers.google.com/admin-sdk/directory. Lees die voordat je velden gokt; de API is streng over de exacte veldnamen.
Gebruikers in een organisatie-eenheid plaatsen
Met organisatie-eenheden (OU's) groepeer je gebruikers, bijvoorbeeld per afdeling. Je plaatst een gebruiker in een OU bij het aanmaken, of achteraf via een update. Let op de volgorde: bij update komt eerst het object met velden, daarna de e-mail van de gebruiker.
function verplaatsNaarOU(email, ouPad) {
AdminDirectory.Users.update({
orgUnitPath: ouPad
}, email);
}
Een ouPad ziet eruit als /Verkoop of /IT/Beheer. De OU moet al bestaan in de Admin-console.
Accounts schorsen en heractiveren
Bij offboarding schors je een account vaak eerst voordat je het verwijdert, zodat data behouden blijft:
function schorsGebruiker(email) {
AdminDirectory.Users.update({ suspended: true }, email);
Logger.log(email + ' is geschorst.');
}
Heractiveren werkt hetzelfde, maar dan met suspended: false.
Schorsen voor verwijderen
Verwijder accounts niet meteen bij vertrek. Schors ze eerst en bewaar de data volgens je bewaarbeleid. Een verwijderd account en zijn gegevens zijn na de hersteltermijn definitief weg. Schorsen is omkeerbaar en geeft je tijd om data over te dragen of te exporteren.
Groepslidmaatschappen meenemen
Bij onboarding wil je nieuwe medewerkers vaak direct in de juiste Google Groups zetten, zodat ze meteen toegang hebben tot gedeelde mappen, agenda's en mailinglijsten. Dat doe je met AdminDirectory.Members.insert(), met eerst het lid-object en daarna het groepsadres:
function voegToeAanGroep(email, groepEmail) {
AdminDirectory.Members.insert({
email: email,
role: 'MEMBER'
}, groepEmail);
}
Een veilige bulk-onboarding draaien
- Activeer de Admin SDK Directory-service in je script.
- Vul een spreadsheet met de nieuwe medewerkers en een lege statuskolom.
- Test de functie eerst met een enkele testrij.
- Draai de bulk-functie en lees de statuskolom op fouten.
- Controleer in de Admin-console of alle accounts correct zijn aangemaakt en in de juiste OU staan.
Genereer wachtwoorden in code
Zet geen plaintext wachtwoorden in je spreadsheet. Genereer per gebruiker in code een lang willekeurig wachtwoord met Utilities.getUuid() of een eigen generator, en laat changePasswordAtNextLogin op true staan. Zo staat er nergens een herbruikbaar wachtwoord in een gedeeld blad.
Welke rechten heb ik nodig?
Je hebt een Workspace-beheerdersrol nodig met de bevoegdheid om gebruikers te beheren. Het script draait met jouw rechten, dus zonder beheerdersrol krijg je een autorisatiefout zodra je een Admin SDK-functie aanroept.
Hoe genereer ik veilige tijdelijke wachtwoorden?
Genereer per gebruiker een lang willekeurig wachtwoord in code en zet changePasswordAtNextLogin op true. De medewerker kiest dan bij de eerste login een eigen wachtwoord, en het tijdelijke wachtwoord blijft niet in een spreadsheet staan.
Kan ik ook groepslidmaatschappen beheren?
Ja. Met AdminDirectory.Members.insert(lid, groepEmail) voeg je gebruikers toe aan Google Groups en met AdminDirectory.Members.remove haal je ze er weer uit. Handig om in een keer de juiste toegang te regelen.
Wat als een e-mailadres al bestaat?
Dan gooit insert een fout. Vang die per rij op met try-catch en schrijf de status weg, zodat de rest van de batch wel doorloopt. Controleer de statuskolom achteraf op rijen die niet zijn gelukt.
Hoeveel accounts kan ik in een keer aanmaken?
De Directory API kent quota- en snelheidslimieten, en Apps Script kent een maximale uitvoeringstijd per run. Bij honderden of duizenden gebruikers verwerk je beter batches van enkele honderden rijen tegelijk en bouw je een korte pauze of hervatpunt in via de statuskolom.
Werkt dit ook met een service-account in plaats van mijn eigen account?
Voor servergedreven automatisering zonder interactieve login gebruik je domain-wide delegation met een service-account en de Directory API rechtstreeks. Binnen Apps Script draait de code standaard onder de ingelogde beheerder; dat is voldoende voor handmatige bulk-acties.
Volgende stap
Bulk-gebruikersbeheer is de basis voor complete personeelsprocessen. Automatiseer de uitstroom met offboarding automatiseren en houd je code veilig met best practices.