# Tijdgestuurde triggers instellen in Apps Script Tijdgestuurde triggers instellen in Apps Script is de sleutel tot echte automatisering. In plaats van een functie handmatig te starten, laat je Google die automatisch draaien: elke minuut, elk uur, dagelijks of wekelijks. Zo verstuur je rapportages, synchroniseer je data of ruim je oude bestanden op zonder dat je erbij bent. In dit artikel leer je triggers instellen via de editor en programmatisch. [[TOC]] ## Wat is een tijdgestuurde trigger Een trigger is een gebeurtenis die een functie laat draaien. Een tijdgestuurde trigger (time-driven trigger) is gekoppeld aan de klok in plaats van aan een gebruikersactie. Je geeft aan hoe vaak en wanneer een functie moet draaien, en de servers van Google voeren die dan automatisch uit, ook als je browser dicht is. :::info title="Soorten triggers" Naast tijdgestuurde triggers bestaan er installeerbare triggers op gebeurtenissen, zoals onFormSubmit, onEdit en onOpen. De volledige lijst en hun beperkingen staat op developers.google.com/apps-script/guides/triggers. Dit artikel gaat over de tijdgestuurde variant. ::: ## Een trigger instellen via de editor De makkelijkste manier is via de grafische interface. In de Apps Script-editor zie je links een klok-icoon (Triggers). Daar voeg je met een paar klikken een trigger toe. :::howto title="Trigger toevoegen in de editor" 1. Open je project in de Apps Script-editor. 2. Klik links op het klok-icoon **Triggers**. 3. Klik rechtsonder op **Trigger toevoegen**. 4. Kies de functie die moet draaien en als gebeurtenisbron **Tijdgestuurd**. 5. Stel het type in, bijvoorbeeld **Dagelijkse timer** om 06:00 tot 07:00. 6. Klik op **Opslaan** en autoriseer indien gevraagd. ::: ## Een trigger programmatisch maken Voor herbruikbare of voorwaardelijke triggers stel je ze in met code via `ScriptApp.newTrigger()`. Zo kun je triggers automatisch aanmaken bij installatie van je script. ```javascript function maakDagelijkseTrigger() { ScriptApp.newTrigger('stuurDagrapport') .timeBased() .everyDays(1) .atHour(6) .create(); Logger.log('Dagelijkse trigger om 06:00 ingesteld.'); } ``` Voor een functie die elk uur draait: ```javascript function maakUurlijkseTrigger() { ScriptApp.newTrigger('synchroniseer') .timeBased() .everyHours(1) .create(); } ``` De kleinste interval voor `everyMinutes()` is elke minuut, en die waarde moet 1, 5, 10, 15 of 30 zijn. Andere waarden levert een foutmelding op. ## Dubbele triggers voorkomen Een veelgemaakte fout is dat je dezelfde functie als programmatische trigger-maker meerdere keren draait, waardoor je twee of drie identieke triggers krijgt die allemaal afgaan. Ruim daarom eerst bestaande triggers op: ```javascript function herstelTriggers() { const bestaande = ScriptApp.getProjectTriggers(); bestaande.forEach(function(t) { if (t.getHandlerFunction() === 'stuurDagrapport') { ScriptApp.deleteTrigger(t); } }); ScriptApp.newTrigger('stuurDagrapport') .timeBased() .everyDays(1) .atHour(6) .create(); } ``` :::warn title="Check altijd bestaande triggers" Maak nooit blind een trigger aan zonder eerst de bestaande te checken. Een script dat bij elke run een nieuwe trigger toevoegt, stapelt triggers op tot je tegen de limiet van 20 triggers per script per gebruiker aanloopt en je rapport meerdere keren per dag verstuurt. ::: ## Triggers en quota Tijdgestuurde triggers tellen mee in de dagelijkse uitvoeringsquota. Volgens de officiele quota-pagina van Google (geverifieerd juni 2026) geldt per gebruiker een limiet op de totale trigger-uitvoeringstijd per dag: ongeveer 90 minuten voor een gratis consumentenaccount en 6 uur voor een Google Workspace-account. Een script dat elke minuut draait verbruikt veel meer van dat budget dan een dagelijks rapport. Kies dus de laagste frequentie die je nodig hebt. :::tip title="Vermijd lege runs" Heb je iets dat technisch elke minuut zou kunnen draaien, maar in de praktijk maar af en toe werk heeft? Laat de minuut-trigger snel controleren of er iets te doen is en direct stoppen als dat niet zo is. Zo verspil je geen uitvoeringstijd aan lege runs. ::: ## Een trigger weer verwijderen Triggers blijven actief tot je ze verwijdert, ook als je de functie weghaalt. Via de editor verwijder je ze met het prullenbak-icoon naast de trigger. Programmatisch gebruik je `deleteTrigger()` zoals hierboven, of je verwijdert alle triggers: ```javascript function verwijderAlleTriggers() { ScriptApp.getProjectTriggers().forEach(function(t) { ScriptApp.deleteTrigger(t); }); } ``` :::faq ### Hoe nauwkeurig is een tijdgestuurde trigger? Google voert hem binnen een tijdvenster uit, niet op de seconde precies. Een dagelijkse trigger om 06:00 draait ergens tussen 06:00 en 07:00. Reken niet op exacte timing. ### Hoeveel triggers mag ik hebben? Maximaal 20 triggers per script per gebruiker. Daarom is opruimen van oude triggers belangrijk. ### Draaien triggers ook als mijn computer uit is? Ja. Triggers draaien op de servers van Google, los van jouw apparaat of browser. ### Waarom draait mijn trigger niet? Controleer of de trigger nog bestaat, of de functienaam exact klopt en bekijk het uitvoeringslogboek op fouten. Een fout in de functie stopt de run maar verwijdert de trigger niet. ### Wat is de kleinste interval die ik kan instellen? Voor een minuut-trigger kun je 1, 5, 10, 15 of 30 minuten kiezen. Wil je vaker dan elke minuut iets doen, dan past een tijdgestuurde trigger niet en heb je een andere aanpak nodig. ::: ## Volgende stap Met triggers maak je elk script zelfstandig. Combineer dit met [[apps-script-dagelijks-rapport|een dagelijks e-mailrapport]] voor een complete, onbemande automatisering, of zet een trigger op je [[apps-script-offboarding|offboarding-flow]].