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

On-call schema beheren met Agenda en Sheets

Praktische aanpak voor het digitaal beheren van bereikbaarheidsroosters in zorgteams met Google Agenda en Google Sheets, inclusief automatische synchronisatie via Apps Script.

Het on-call vraagstuk in de zorg

Zorginstellingen hebben medewerkers nodig die buiten kantooruren bereikbaar zijn. Het bijhouden van een actueel on-call schema is een administratieve uitdaging: medewerkers ruilen diensten, melden zich ziek en vakantieplanning verandert. Een spreadsheet die volledig handmatig wordt bijgehouden leidt al snel tot fouten en verwarring.

Een robuuste oplossing combineert Google Sheets als bron van waarheid met Google Agenda als distributiekanaal. Het schema staat in Sheets en via Apps Script worden de diensten automatisch als afspraken in de juiste agenda gepubliceerd.

info

Waarom Sheets als bron en Agenda als kanaal

Sheets biedt een vertrouwde interface voor planners, conditional formatting voor conflictdetectie en eenvoudige export. Agenda is het uiteindelijke distributiekanaal naar medewerkers, ook op mobiel.

Sheets-structuur voor het rooster

Maak een Google Sheet aan met een tabblad Rooster en de volgende kolommen:

Kolom Inhoud Voorbeeld
A Datum 2026-06-15
B Dienst Dag, Avond, Nacht, Weekend
C Medewerker naam of e-mailadres
D Rol Dienstdoend arts, Back-up
E Status Gepland, Bevestigd, Geruild
F Afspraak-ID gevuld door Apps Script

Gebruik datavalidatie op kolom B en C om typefouten te voorkomen. Maak een apart tabblad Medewerkers met alle namen en e-mailadressen als bronlijst voor die validatie.

Stel daarnaast conditional formatting in zodat conflicten direct opvallen:

  • Rood als een dienst niet ingevuld is.
  • Oranje als een medewerker meer dan 5 diensten in 14 dagen heeft.
  • Groen als de dienst bevestigd is.

Apps Script: Sheets naar Agenda synchroniseren

  1. Open het rooster-Sheet en ga naar Extensies > Apps Script.
  2. Maak een functie syncRoosterNaarAgenda() die het tabblad Rooster leest.
  3. Haal per rij de datum, het diensttype en de medewerker op.
  4. Selecteer de kalender met CalendarApp.getCalendarsByName('On-call Rooster')[0].
  5. Maak per rij een afspraak met calendar.createEvent(titel, startTijd, eindTijd).
  6. Bewaar het afspraak-ID in kolom F, zodat je bij de volgende run de bestaande afspraak bijwerkt in plaats van een duplicaat te maken.
  7. Stel onder Triggers een tijdgestuurde trigger in (bijvoorbeeld dagelijks om 06:00) zodat de sync automatisch loopt.
lightbulb

Voorkom dubbele afspraken

Controleer altijd eerst of kolom F al een afspraak-ID bevat. Bestaat de afspraak nog, gebruik dan calendar.getEventById(id) en pas die aan. Zo blijft de agenda schoon, ook na honderden runs.

Ruilverzoeken verwerken

Maak een tweede tabblad Ruilen aan. Medewerkers dienen via een Google Form een ruilvraag in: ze vullen hun naam, de dienst die ze willen ruilen en de gewenste ruilpartner in. Het formulier vult het tabblad Ruilen automatisch.

Een Apps Script-trigger controleert dagelijks of beide partijen akkoord zijn (kolom Geaccepteerd staat voor beide op Ja) en past dan automatisch het tabblad Rooster aan. De Agenda-sync verspreidt de wijziging vervolgens naar alle agenda's.

Notificaties instellen

Gebruik Apps Script om e-mailnotificaties te versturen op de juiste momenten:

  • Aan de medewerker die de komende week on-call is, 7 dagen van tevoren.
  • Aan de afdeling als een dienst 48 uur van tevoren nog niet is ingevuld.
  • Een bevestiging aan beide partijen bij een goedgekeurde ruil.

Voor eenvoudige berichten volstaat MailApp.sendEmail(). Wil je meer opmaak of bijlagen, gebruik dan GmailApp.

Toegangsrechten voor het rooster

Het rooster bevat namen van medewerkers en diensten, maar geen patiëntinformatie. Toegangsrechten zijn toch belangrijk:

  • Planners: bewerktoegang tot het Sheet.
  • Medewerkers: leestoegang tot het Sheet en de Agenda.
  • Management: leestoegang voor rapportage en bezettingsoverzicht.
  • Externe medewerkers of uitzendkrachten: geen toegang tot het interne rooster, alleen hun eigen afspraken.

Maak een Google Groep per rol en deel het Sheet en de Agenda met die groepen. Zo beheer je rechten op één plek in plaats van per persoon.

warning

Deel niet breder dan nodig

Zet het rooster nooit op "Iedereen met de link". Namen en diensten zijn persoonsgegevens; beperk toegang tot mensen met een dienstbetrekking en een legitieme reden om het rooster te zien.

Rapportage op basis van het rooster

Sheets biedt eenvoudige mogelijkheden voor bezettingsrapportage. Gebruik COUNTIF of draaitabellen om vragen te beantwoorden zoals:

  • Hoeveel diensten heeft elke medewerker dit kwartaal gedraaid?
  • Welke diensten worden het vaakst geruild?
  • Is er een patroon in uitval op bepaalde tijden?

Exporteer maandelijkse samenvattingen via Bestand > Downloaden > PDF en deel die met het management.

Mag ik medewerkersnamen in een gedeelde Google Sheet opslaan?

Ja, namen van medewerkers zijn gewone persoonsgegevens waarvoor de arbeidsovereenkomst als grondslag dient. Beperk de toegang tot het rooster wel tot medewerkers met een dienstbetrekking en deel niet breder dan nodig.

Hoe verwerk ik ziektemeldingen snel in het rooster?

Maak een eenvoudig Google Form voor ziektemeldingen. Een Apps Script stuurt direct een melding naar de planner, die de vervanging regelt en het rooster aanpast. De Agenda-sync verspreidt de wijziging daarna automatisch.

Werkt de Sheets-Agenda-koppeling ook op mobiel?

Ja, de Google Agenda-app toont de gesynchroniseerde diensten op telefoon en tablet. Medewerkers kunnen per afspraak meldingen instellen.

Hoe ga ik om met diensten die over middernacht heen lopen?

Zet de eindtijd van de afspraak op de volgende dag. Apps Script verwerkt dit correct zolang je losse Date-objecten gebruikt voor de start- en eindtijd.

Wat gebeurt er als de dagelijkse trigger een keer faalt?

Apps Script logt de fout en de afspraken van die dag worden niet bijgewerkt. Laat de sync idempotent werken via het afspraak-ID in kolom F, zodat de volgende geslaagde run alles vanzelf weer rechttrekt.

Hoeveel afspraken kan ik per dag aanmaken?

Apps Script kent quota per account. Voor een normaal afdelingsrooster is dat ruim voldoende, maar zeer grote organisaties kunnen tegen dagelijkse limieten aanlopen. Verdeel het werk dan over meerdere runs of beperk de sync tot een venster van bijvoorbeeld de komende 30 dagen.