Naar inhoud
lightbulb Welkom op de nieuwe kennisbank | We hebben de docs volledig vernieuwd met meer dan 160 features. Bekijk wat nieuw isarrow_forward

Agenda-afspraken aanmaken met Apps Script

Maak agenda-afspraken met Apps Script via CalendarApp: losse afspraken, afspraken met gasten en herhalende reeksen, plus het uitlezen van bestaande events om planning te automatiseren.

Agenda-afspraken aanmaken met Apps Script is een krachtige manier om planning te automatiseren. Je koppelt een spreadsheet of formulier aan Google Agenda en laat afspraken automatisch verschijnen. In dit artikel leer je losse afspraken, afspraken met gasten en herhalende reeksen aanmaken, plus hoe je bestaande events uitleest.

De juiste agenda kiezen

Elke gebruiker heeft een standaardagenda en kan daarnaast meerdere agenda's hebben. Je opent de standaardagenda met getDefaultCalendar() of een specifieke agenda op id met getCalendarById().

function openAgenda() {
  const agenda = CalendarApp.getDefaultCalendar();
  Logger.log('Agenda: ' + agenda.getName());
}
info

Agenda-id vinden

Het id van een gedeelde agenda vind je in de Agenda-instellingen onder "Agenda integreren". Het ziet eruit als een e-mailadres, bijvoorbeeld id@group.calendar.google.com. Gebruik CalendarApp.getCalendarById('id@group.calendar.google.com') om die agenda aan te spreken. De volledige referentie staat op developers.google.com/apps-script/reference/calendar.

Een eenvoudige afspraak maken

De basis is createEvent() met een titel, een begintijd en een eindtijd. Tijden geef je als JavaScript Date-objecten:

function maakAfspraak() {
  const agenda = CalendarApp.getDefaultCalendar();
  const start = new Date('2026-06-10T14:00:00');
  const eind = new Date('2026-06-10T15:00:00');

  const event = agenda.createEvent('Projectoverleg', start, eind);
  Logger.log('Afspraak aangemaakt met id ' + event.getId());
}

Gasten, locatie en beschrijving toevoegen

Met een opties-object als vierde argument verrijk je de afspraak:

function maakAfspraakMetGasten() {
  const agenda = CalendarApp.getDefaultCalendar();
  const start = new Date('2026-06-11T10:00:00');
  const eind = new Date('2026-06-11T11:00:00');

  agenda.createEvent('Kwartaalreview', start, eind, {
    description: 'Bespreking van de Q2-cijfers en doelen.',
    location: 'Vergaderzaal De Brug',
    guests: 'collega1@cloud-captains.com,collega2@cloud-captains.com',
    sendInvites: true
  });
}

Met sendInvites: true krijgen gasten een uitnodiging in hun mail. Zonder dat veld worden ze wel toegevoegd, maar niet gemaild.

lightbulb

Zet het doel in de beschrijving

Voeg altijd een duidelijke description toe met de agenda van de afspraak. Gasten zien die tekst in hun uitnodiging, wat scheelt in heen-en-weer-mailen over het doel van de meeting.

Een herhalende reeks maken

Voor terugkerende afspraken, zoals een wekelijkse standup, gebruik je createEventSeries() met een herhalingsregel die je opbouwt via newRecurrence():

function maakWekelijkseStandup() {
  const agenda = CalendarApp.getDefaultCalendar();
  const start = new Date('2026-06-01T09:00:00');
  const eind = new Date('2026-06-01T09:15:00');

  const herhaling = CalendarApp.newRecurrence()
    .addWeeklyRule()
    .onlyOnWeekdays([CalendarApp.Weekday.MONDAY, CalendarApp.Weekday.WEDNESDAY])
    .times(20);

  agenda.createEventSeries('Dagelijkse standup', start, eind, herhaling);
}

Deze reeks plant een standup elke maandag en woensdag, 20 keer in totaal. Wil je in plaats van een vast aantal keren tot een einddatum doorgaan, vervang .times(20) dan door .until(new Date('2026-12-31')).

Bestaande afspraken uitlezen

Wil je weten wat er gepland staat, vraag dan events op binnen een periode:

function leesAfsprakenVandaag() {
  const agenda = CalendarApp.getDefaultCalendar();
  const begin = new Date();
  begin.setHours(0, 0, 0, 0);
  const eind = new Date();
  eind.setHours(23, 59, 59, 999);

  const events = agenda.getEvents(begin, eind);
  events.forEach(function(e) {
    Logger.log(e.getTitle() + ' om ' + e.getStartTime());
  });
}

Het hele proces op een rij

De stappen om vanuit een script een afspraak in te plannen lopen altijd in dezelfde volgorde:

Zo plan je een afspraak vanuit een script

  1. Kies de agenda met getDefaultCalendar() of getCalendarById().
  2. Maak Date-objecten voor de begin- en eindtijd.
  3. Roep createEvent() aan, met een opties-object als je gasten, locatie of beschrijving wilt.
  4. Zet sendInvites: true om gasten direct een uitnodiging te mailen.
  5. Log het event-id of de titel ter controle.
warning

Let op de tijdzone van het script

Date-objecten worden uitgelegd in de tijdzone van het script, niet die van de gebruiker. Stel de juiste tijdzone in via Projectinstellingen in de editor (of in appsscript.json). Anders kan een afspraak een uur verschuiven, zeker rond de zomer- en wintertijdwisseling.

Een Google Meet-link toevoegen

De basis CalendarApp voegt niet rechtstreeks een Google Meet-link toe. Daarvoor gebruik je de geavanceerde Calendar-service (Advanced Calendar Service), die je eerst onder "Services" in de editor activeert. Je maakt het event dan via Calendar.Events.insert() met een conferenceData-blok en conferenceDataVersion: 1. De Meet-link verschijnt automatisch in de uitnodiging.

Koppelen aan een formulier

De echte kracht ontstaat als je dit combineert met andere diensten. Laat bijvoorbeeld een formulierinzending automatisch een afspraak inplannen, zie formulierreacties verwerken. Zo bouw je een reserveringssysteem zonder externe tools.

Hoe maak ik een afspraak voor de hele dag?

Gebruik createAllDayEvent('Titel', new Date('2026-06-10')). Die heeft geen begin- en eindtijd nodig, alleen een datum.

Worden gasten automatisch uitgenodigd?

Alleen als je sendInvites: true meegeeft in het opties-object. Anders staan ze wel als gast in de afspraak, maar krijgen ze geen mail.

Kan ik een Google Meet-link toevoegen?

Via de basis CalendarApp niet rechtstreeks. Daarvoor gebruik je de geavanceerde Calendar-service met conferenceData. Die activeer je eerst onder Services in de editor.

Hoe verwijder ik een afspraak?

Haal de afspraak op en roep event.deleteEvent() aan. Voor een hele reeks gebruik je series.deleteEventSeries().

Waarom staat mijn afspraak op het verkeerde tijdstip?

Bijna altijd door de tijdzone-instelling van het script. Controleer de tijdzone in Projectinstellingen en zorg dat je Date-objecten kloppen met die zone.

Kan ik dit script automatisch laten draaien?

Ja, koppel de functie aan een trigger, bijvoorbeeld bij een formulierinzending of op een vast tijdstip. Dat stel je in onder Triggers in de editor.