Met Google Apps Script automatiseer je terugkerend werk in Google Workspace. Een trigger zorgt ervoor dat een functie vanzelf draait, zonder dat iemand het script handmatig start. Dat is de kern van automatisering: een rapport dat elke ochtend wordt verstuurd, een Spreadsheet die zichzelf opschoont, of een actie die volgt op een ingezonden formulier.
Twee soorten triggers
Apps Script kent eenvoudige triggers en installeerbare triggers. Het verschil is belangrijk.
- Eenvoudige triggers zoals
onOpenenonEditzijn functies met een vaste naam die automatisch draaien. Ze hebben beperkte rechten: ze mogen geen diensten aanroepen die autorisatie vragen, zoals mail versturen of een ander bestand benaderen. - Installeerbare triggers stel je bewust in en kunnen wel diensten gebruiken die autorisatie vereisen. Ze draaien altijd onder het account van de persoon die de trigger heeft aangemaakt.
Voor echte automatisering gebruik je vrijwel altijd installeerbare triggers.
Tijdgestuurde triggers
Een tijdgestuurde trigger draait op een interval, van elke minuut tot eens per maand. Je maakt hem aan in de editor of in code.
Een tijdgestuurde trigger via de editor
- Open je project op script.google.com.
- Klik links op het wekker-icoon (Triggers).
- Kies rechtsonder Trigger toevoegen.
- Selecteer de functie die moet draaien en kies bij gebeurtenisbron Tijdgestuurd.
- Stel het type tijdinterval in (bijvoorbeeld Dagteller met een tijdvak), en sla op.
In code met de builder-API:
function maakTriggers() {
ScriptApp.newTrigger('dagelijksRapport')
.timeBased()
.everyDays(1)
.atHour(9)
.create();
ScriptApp.newTrigger('controleerInbox')
.timeBased()
.everyMinutes(10)
.create();
}
Alleen vaste minuut-intervallen
Bij everyMinutes() accepteert Apps Script alleen de waarden 1, 5, 10, 15 of 30. Een andere waarde geeft een foutmelding.
Voor een vaste dag in de week gebruik je onWeekDay:
ScriptApp.newTrigger('weekoverzicht')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(8)
.create();
Het tijdvak bij atHour is geen exact tijdstip maar een venster van een uur. Een trigger met atHour(9) draait ergens tussen 9 en 10 uur, in de tijdzone die in de projectinstellingen staat.
Gebeurtenis-triggers
Een gebeurtenis-trigger reageert op een actie in een bestand. Veelgebruikte gevallen zijn een bewerking in een Spreadsheet, een wijziging van de structuur, of een ingezonden Google Formulier.
function maakEditTrigger() {
ScriptApp.newTrigger('verwerkWijziging')
.forSpreadsheet(SpreadsheetApp.getActive())
.onEdit()
.create();
}
De functie die je koppelt, ontvangt een gebeurtenis-object met details over wat er gebeurde, zoals de bewerkte cel of de ingezonden formulierantwoorden.
Installeerbare onEdit voor echte acties
Gebruik een installeerbare onEdit-trigger in plaats van de eenvoudige variant zodra je actie mail moet versturen of een ander bestand moet bijwerken. Alleen de installeerbare trigger heeft daar de rechten voor.
Triggers beheren en opruimen
In het Triggers-overzicht zie je alle triggers van het project, met de uitvoeringsgeschiedenis en eventuele fouten. Verwijder triggers die je niet meer nodig hebt; ze blijven anders draaien en tellen mee voor je dagelijkse limiet.
In code haal je bestaande triggers op en verwijder je ze gericht:
function verwijderTriggers() {
const triggers = ScriptApp.getProjectTriggers();
triggers.forEach(t => ScriptApp.deleteTrigger(t));
}
Voorkom dubbele triggers
Laat een script niet bij elke uitvoering opnieuw dezelfde trigger aanmaken. Doe je dat wel, dan stapelen identieke triggers zich op en draait je functie veel vaker dan bedoeld. Controleer met getProjectTriggers() of een trigger al bestaat voordat je een nieuwe maakt, of ruim eerst alle bestaande triggers op.
De eerste keer autoriseren
De eerste keer dat een installeerbare trigger draait, vraagt Google toestemming voor de scopes die het script gebruikt, bijvoorbeeld toegang tot Gmail of Drive. Die toestemming geef je eenmalig; daarna draait de trigger automatisch onder jouw account.
Met deze bouwstenen, een tijdgestuurde of gebeurtenis-trigger, een nette opruim-functie en eenmalige autorisatie, zet je betrouwbare automatiseringen op zonder dat er nog iemand handmatig op start hoeft te klikken.
Wat is het verschil tussen een eenvoudige en een installeerbare trigger?
Een eenvoudige trigger is een functie met een vaste naam zoals onOpen of onEdit die automatisch draait, maar geen diensten mag gebruiken die autorisatie vragen. Een installeerbare trigger stel je bewust in, mag wel mail versturen of andere bestanden benaderen, en draait altijd onder het account van wie hem heeft aangemaakt.
Hoe vaak mag een tijdgestuurde trigger minimaal draaien?
Het kortste interval is elke minuut. Bij everyMinutes() zijn alleen de waarden 1, 5, 10, 15 en 30 toegestaan; andere waarden geven een foutmelding.
Waarom draait mijn trigger niet precies op het ingestelde tijdstip?
Tijdgestuurde triggers werken met een tijdvenster van een uur, niet met een exact tijdstip. Een trigger met atHour(9) start ergens tussen 9 en 10 uur. Voor acties die op de minuut nauwkeurig moeten, is een tijdgestuurde trigger niet de juiste keuze.
Hoe voorkom ik dat dezelfde trigger zich opstapelt?
Maak triggers niet aan bij elke uitvoering van je script. Controleer met getProjectTriggers() of de trigger al bestaat, of verwijder eerst alle bestaande triggers met deleteTrigger() voordat je een nieuwe aanmaakt.
Waarom vraagt mijn script de eerste keer om toestemming?
Een installeerbare trigger gebruikt scopes zoals toegang tot Gmail of Drive. Google vraagt eenmalig om die toestemming via een autorisatiescherm. Daarna draait de trigger zonder verdere tussenkomst onder jouw account.
Welke acties kunnen een gebeurtenis-trigger laten afgaan?
Veelgebruikte gebeurtenissen zijn een bewerking in een Spreadsheet (onEdit), het openen van een bestand (onOpen), een wijziging van de structuur en het indienen van een Google Formulier (onFormSubmit).