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

Google Slides API voor automatisering

Gebruik de Google Slides API om presentaties programmatisch aan te maken, tekst en afbeeldingen te vervangen en sjablonen te vullen met data via REST, clientlibraries of Apps Script.

Inleiding tot de Slides API

De Google Slides API is een REST-API waarmee je programmatisch presentaties kunt aanmaken, lezen en aanpassen. Typische use cases zijn:

  • Automatisch rapport-presentaties genereren uit data
  • Tekst of afbeeldingen vervangen in een sjabloon (mail merge voor slides)
  • Consistente branding afdwingen over meerdere presentaties
  • Dia's samenvoegen uit meerdere bronbestanden

De API is beschikbaar via directe REST-aanroepen, de Google API Client Libraries (Python, Node.js, Java, Go) en Google Apps Script.

Authenticatie instellen

De Slides API vereist OAuth 2.0 of een serviceaccount.

Voor persoonlijk gebruik of kleine scripts gebruik je OAuth 2.0:

OAuth 2.0 opzetten in de Cloud Console

  1. Ga naar de Google Cloud Console.
  2. Maak een project aan of selecteer een bestaand project.
  3. Activeer de Google Slides API via APIs & Services en dan Library.
  4. Maak OAuth 2.0-aanmeldingsgegevens aan (type: Desktop application).
  5. Download de credentials.json.

Voor server-side automatisering gebruik je een serviceaccount en deel je de presentatie met het serviceaccount-e-mailadres. Geef het serviceaccount alleen toegang tot de bestanden die het echt nodig heeft.

warning

Houd je sleutels uit versiebeheer

Sla credentials.json en serviceaccount-sleutels nooit op in je repository. Gebruik omgevingsvariabelen of Google Secret Manager, en roteer sleutels regelmatig.

Presentatie ophalen

from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

creds = Credentials.from_authorized_user_file('token.json')
service = build('slides', 'v1', credentials=creds)

presentation = service.presentations().get(
    presentationId='PRESENTATION_ID'
).execute()

slides = presentation.get('slides')
print(f'Presentatie heeft {len(slides)} dia(s)')

De presentationId vind je in de URL van je presentatie: docs.google.com/presentation/d/PRESENTATION_ID/edit.

Tekst vervangen via batchUpdate

De krachtigste methode is batchUpdate, waarmee je meerdere wijzigingen in één aanroep doorstuurt. Dat is efficiënter en telt voor je quotum als één write-verzoek per batch:

requests = [
    {
        'replaceAllText': {
            'containsText': {'text': '{{NAAM}}', 'matchCase': True},
            'replaceText': 'Jan de Vries'
        }
    },
    {
        'replaceAllText': {
            'containsText': {'text': '{{DATUM}}', 'matchCase': True},
            'replaceText': '1 juni 2026'
        }
    }
]

service.presentations().batchUpdate(
    presentationId='PRESENTATION_ID',
    body={'requests': requests}
).execute()

Dit is de basis van een mail-merge systeem voor presentaties: maak een sjabloon met placeholders en vervang ze via de API met variabele data.

Afbeelding vervangen

requests = [
    {
        'replaceAllShapesWithImage': {
            'imageUrl': 'https://example.com/foto.jpg',
            'imageReplaceMethod': 'CENTER_INSIDE',
            'containsText': {'text': '{{FOTO}}'}
        }
    }
]
lightbulb

Zorg dat afbeeldingen bereikbaar zijn

Gebruik openbaar toegankelijke afbeeldings-URLs, of upload afbeeldingen eerst naar Google Drive en gebruik de Drive-URL met openbare leesrechten. De API moet de afbeelding kunnen ophalen op het moment van de aanroep.

Presentatie aanmaken vanuit sjabloon

De aanbevolen workflow is:

Sjabloon kopiëren en vullen

  1. Maak een sjabloon-presentatie handmatig in Slides met placeholders zoals {{NAAM}}.
  2. Kopieer het bestand via de Drive API met drive.files().copy(fileId='TEMPLATE_ID', body={'name': 'Nieuwe presentatie'}).
  3. Vervang de placeholders in de kopie via de Slides API met batchUpdate.
from googleapiclient.discovery import build

drive = build('drive', 'v3', credentials=creds)
slides = build('slides', 'v1', credentials=creds)

kopie = drive.files().copy(
    fileId='TEMPLATE_ID',
    body={'name': f'Rapport {datum}'}
).execute()

nieuwe_id = kopie['id']
slides.presentations().batchUpdate(
    presentationId=nieuwe_id,
    body={'requests': vervang_requests}
).execute()

Werk altijd op een kopie en nooit rechtstreeks op het sjabloon, anders raken je placeholders na de eerste run definitief overschreven.

Apps Script als alternatief

Voor gebruikers zonder Python-ervaring is Google Apps Script een laagdrempeliger alternatief. De SlidesApp-service biedt directe toegang tot presentaties zonder externe authenticatie:

function vervangTekst() {
  const presentatie = SlidesApp.openById('PRESENTATION_ID');
  presentatie.replaceAllText('{{NAAM}}', 'Jan de Vries');
}

Quota en limieten

Standaard gebruik van de Slides API is op dit moment gratis. Google heeft aangekondigd dat het overschrijden van de quotumlimieten later in 2026 kosten kan opleveren op je Cloud-factuur. Houd daarom rekening met de actuele limieten en bouw exponential backoff in.

De officiële limieten (per project, controleer de documentatie voor de laatste stand):

Type verzoek Per minuut per project Per minuut per gebruiker
Leesverzoeken 3.000 600
Schrijfverzoeken 600 60
Thumbnail (dure read) 300 60

Bij overschrijding krijg je een 429-statuscode. Vang die op met een retry met exponentieel oplopende wachttijd, en bundel waar mogelijk wijzigingen in één batchUpdate om verzoeken te besparen.

Wat zijn de quotumlimieten van de Slides API?

Per project geldt standaard ongeveer 600 schrijfverzoeken en 3.000 leesverzoeken per minuut. Per gebruiker is dat ongeveer 60 schrijf- en 600 leesverzoeken per minuut. Je kunt een verhoging aanvragen via de Cloud Console, maar dat wordt niet gegarandeerd toegekend.

Kan ik via de API dia-overgangen of animaties instellen?

Nee. De Slides API ondersteunt het lezen en schrijven van dia-inhoud en opmaak, maar niet de overgangen tussen dia's of element-animaties.

Welke bestandsformaten kan ik exporteren?

Het exporteren gaat via de Drive API met het files.export-endpoint. Je kunt onder meer naar PDF en PPTX exporteren, en per dia een afbeelding ophalen als PNG of JPEG via het thumbnail-endpoint.

Is de Slides API gratis?

Standaard gebruik is op dit moment gratis. Google heeft wel aangekondigd dat het overschrijden van de quotumlimieten later in 2026 in rekening gebracht kan worden op je Cloud-factuur, dus controleer de actuele voorwaarden voor productiegebruik.

Wat is het verschil tussen OAuth 2.0 en een serviceaccount?

OAuth 2.0 werkt namens een ingelogde gebruiker en is geschikt voor scripts en desktoptools. Een serviceaccount werkt zonder gebruiker en is bedoeld voor server-side automatisering. Bij een serviceaccount moet je de presentatie expliciet delen met het serviceaccount-e-mailadres.

Praktijkvoorbeeld: weekrapporten

Een typisch praktijkgeval is een wekelijks rapport dat automatisch gegenereerd wordt uit een Google Spreadsheet:

  1. Lees data uit de Spreadsheet via de Sheets API.
  2. Kopieer het sjabloon via de Drive API.
  3. Vervang placeholders in de kopie via de Slides API.
  4. Stuur de link naar het rapport via de Gmail API.

Dit hele proces automatiseer je met een Cloud Run-functie die elke maandag wordt getriggerd via Cloud Scheduler.