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

Klantrapportages met Workspace

Combineer data uit Sheets en grafieken in een Docs-rapport en automatiseer maandelijkse klantrapportages voor meerdere klanten met Apps Script.

Klantrapportages efficiënt opzetten

Marketing- en reclamebureaus, consultants en managed service providers sturen maandelijks rapporten aan tientallen klanten. Zonder automatisering kost dat uren per rapport. Met Google Workspace automatiseer je het genereerproces, zodat je alleen nog de kwalitatieve analyse hoeft toe te voegen.

lightbulb

Investeer eenmalig in een goed sjabloon

Het sjabloon is de basis voor honderden toekomstige rapporten. Zorg dat alle vaste elementen (logo, structuur, disclaimer) al in het sjabloon zitten. Dat eenmalige werk verdien je elke maand terug.

Rapportagestructuur

Een professionele klantrapportage bevat doorgaans deze onderdelen:

  1. Samenvatting: drie tot vijf bullet points met de kern van de maand.
  2. Belangrijkste resultaten: de meest relevante KPI's visueel weergegeven.
  3. Campagneoverzicht: prestaties per actieve campagne.
  4. Vergelijking: maand op maand en jaar op jaar.
  5. Analyse: kwalitatieve duiding van opvallende resultaten.
  6. Aanbevelingen: twee tot drie concrete acties voor de komende periode.
  7. Bijlage: gedetailleerde data voor wie dieper wil duiken.

Sjabloon aanmaken in Docs

Maak het rapportagesjabloon met variabele velden tussen vierkante haken. Het script vervangt deze later automatisch:

# Maandrapportage [MAAND] [JAAR]

**Klant:** [KLANTNAAM]
**Periode:** [STARTDATUM] tot [EINDDATUM]
**Opgesteld door:** [CONSULTANT]
**Datum:** [RAPPORTAGEDATUM]

## Samenvatting

[SAMENVATTING_TEKST]

## Kernresultaten

| KPI | Doelstelling | Resultaat | Verschil |
|---|---|---|---|
| [KPI1] | [DOEL1] | [RESULTAAT1] | [VERSCHIL1] |

Sla het sjabloon op in een vaste Sjablonen-map in Drive en noteer het bestand-ID uit de URL. Dat ID heb je straks nodig in het script.

Grafieken vanuit Sheets insluiten

Voor elke klant heb je een Sheets-bestand met data. Sluit de belangrijkste grafieken live in het rapport in, zodat ze meebewegen met de bron.

Een live grafiek koppelen

  1. Maak de grafiek in Sheets en klik die aan.
  2. Klik op het menu met drie puntjes rechtsboven in de grafiek en kies Grafiek kopiëren.
  3. Ga naar je Docs-rapport en plak met Ctrl+V (of Cmd+V op Mac).
  4. Kies in het pop-upvenster Koppelen aan spreadsheet en klik op Plakken.
  5. Bij nieuwe data verschijnt rechtsboven in de grafiek een knop Bijwerken, waarmee je de laatste stand ophaalt.

Je kunt een grafiek ook invoegen via Invoegen > Diagram > Uit Spreadsheets als je liever vanuit Docs begint.

Geautomatiseerde rapportage via Apps Script

Voor meerdere klanten schrijf je een script dat het sjabloon kopieert, de variabelen invult en een PDF mailt:

function genereerMaandrapportage() {
  var ss = SpreadsheetApp.openById('KLANTEN_SHEETS_ID');
  var klanten = ss.getSheetByName('Klanten').getDataRange().getValues();
  var sjabloonId = 'DOCS_SJABLOON_ID';
  var rapportageMap = DriveApp.getFolderById('RAPPORTAGES_MAP_ID');

  for (var i = 1; i < klanten.length; i++) {
    var klantnaam = klanten[i][0];
    var email = klanten[i][1];
    var sheetsId = klanten[i][2];

    var kopie = DriveApp.getFileById(sjabloonId).makeCopy(
      klantnaam + ' - Rapport ' + Utilities.formatDate(new Date(), 'Europe/Amsterdam', 'MMMM yyyy'),
      rapportageMap
    );

    var doc = DocumentApp.openById(kopie.getId());
    var body = doc.getBody();
    body.replaceText('\\[KLANTNAAM\\]', klantnaam);
    body.replaceText('\\[MAAND\\]', Utilities.formatDate(new Date(), 'Europe/Amsterdam', 'MMMM'));
    body.replaceText('\\[JAAR\\]', Utilities.formatDate(new Date(), 'Europe/Amsterdam', 'yyyy'));
    doc.saveAndClose();

    var pdf = kopie.getAs('application/pdf');
    GmailApp.sendEmail(email, 'Maandrapportage ' + klantnaam, 'Zie bijlage.', {
      attachments: [pdf],
      name: 'Rapportageservice'
    });
  }
}

Installeer daarna een maandelijkse, tijdgestuurde trigger zodat het script automatisch op de eerste dag van elke maand draait.

warning

Test eerst met één klant

Stuur tijdens het testen niet naar echte klanten. Vul de e-mailkolom tijdelijk met je eigen adres, of becommentarieer de GmailApp.sendEmail-regel, totdat je hebt gecontroleerd dat de PDF klopt. Houd ook rekening met de dagelijkse Gmail-verzendlimieten: een gratis account mag minder mails per dag versturen dan een Workspace-account.

Automatische rapportage instellen

  1. Maak het Docs-sjabloon en noteer het bestand-ID uit de URL.
  2. Maak een Sheets-klantenoverzicht met de kolommen klantnaam, e-mail en sheets-id.
  3. Plak het script in Apps Script en vervang de drie ID-constanten.
  4. Test handmatig via Uitvoeren voor één klant en keur de eerste autorisatieprompt goed.
  5. Installeer een trigger via Triggers > Trigger toevoegen > Tijdgestuurd > Maandelijkse timer.
Hoe voeg ik klantspecifieke grafieken toe via het script?

Open het Sheets-bestand van de klant met SpreadsheetApp.openById(sheetsId), haal de grafiek op met getCharts() en voeg die als afbeelding in het rapport in via de blob van de grafiek en de body van het document.

Kan ik het rapport als link versturen in plaats van als PDF?

Ja. Gebruik in de mail de URL van de kopie met kopie.getUrl(). De klant heeft dan wel een Google-account met de juiste toegangsrechten nodig om het document te kunnen openen.

Hoe zorg ik dat elk rapport in een eigen klantmap belandt?

Zoek per klant naar een bestaande submap met rapportageMap.getFoldersByName(klantnaam) en maak die aan als de iterator leeg is. Gebruik die submap vervolgens als doelmap bij makeCopy.

Wat als een klant geen geautomatiseerde data wil maar een handmatige analyse?

Gebruik het sjabloon alleen voor de structuur en vul de data met de hand in voor klanten die een meer narratieve rapportage willen. Het sjabloon bespaart ook dan nog uren werk.

Hoeveel rapporten kan ik per uitvoering versturen?

Dat hangt af van je accounttype. Apps Script kent quota per dag, zoals een maximum aantal verzonden e-mails en een totale uitvoeringstijd per run. Verdeel een grote klantenlijst eventueel over meerdere triggers of voeg een korte pauze toe om binnen de limieten te blijven.