Gebruiksscenario’s
- Server-naar-server-toegang — de app benadert Sheets zonder gebruikersactie
- Geautomatiseerde systemen — achtergrondjobs, crontaken, automatische rapporten
- Vaste spreadsheets — beheer van specifieke spreadsheets
- Productieomgevingen — betrouwbare werking zonder toestemmingsflow voor gebruikers
Vereisten
- Google Cloud Console-project
- Google Sheets API en Google Drive API ingeschakeld
- Beheerdersrechten voor het project
Installatie
1
Google Cloud-project aanmaken
- Ga naar de Google Cloud Console
- Maak een nieuw project aan of selecteer een bestaand project
- Noteer het project-ID
2
Benodigde API's inschakelen
- Ga naar APIs & Services > Library
- Zoek en schakel de volgende API’s in:
- Google Sheets API
- Google Drive API
3
Service Account aanmaken
- Ga naar APIs & Services > Credentials
- Klik op Create Credentials > Service Account
- Vul de gegevens van het Service Account in:
- Service account name: een beschrijvende naam (bijvoorbeeld “Laravel Sheets App”)
- Service account ID: wordt automatisch gegenereerd
- Description: optioneel
- Klik op Create and Continue
- Sla beide optionele secties over en klik op Done
4
Service Account-key genereren
- Klik op de pagina Credentials op het aangemaakte Service Account
- Ga naar het tabblad Keys
- Klik op Add Key > Create new key
- Kies JSON als keyformaat
- Klik op Create
- Het JSON-bestand wordt automatisch gedownload
5
JSON-bestand opslaan
- Verplaats het gedownloade JSON-bestand naar
storage/app/ - Hernoem het naar
google-service-account.json - Belangrijk: voeg het toe aan
.gitignoreom het uit versiebeheer te houden
6
.env-bestand configureren
Voeg het volgende toe aan
.env:7
Scopes instellen in config/google.php
8
Spreadsheets delen
Voor elke Google Sheets-spreadsheet:
- Open de spreadsheet in Google Sheets
- Klik op de knop Delen
- Kopieer het veld
client_emailuit het JSON-bestand - Deel de spreadsheet met dit e-mailadres (bijvoorbeeld
[email protected]) - Kies de rechten:
- Kijker — alleen-lezen
- Bewerker — lezen en schrijven
- Eigenaar — volledige toegang (niet aanbevolen)
Gebruik
Na de configuratie wordt het Service Account automatisch gebruikt. Je hoeft geen accesstoken in te stellen.Best practices voor beveiliging
1. Rechten van het Service Account beperken
- Deel alleen de spreadsheets die nodig zijn
- Gebruik Bewerker in plaats van Eigenaar
- Controleer de toegangsrechten regelmatig
2. Keys veilig bewaren
- Neem Service Account-keys niet op in versiebeheer
- Sluit ze betrouwbaar uit via
.gitignore - Sla ze in productie op een veilige plek buiten de webroot op
- Roteer keys regelmatig
3. Uitrol naar productie
Aanvullende beveiligingsmaatregelen:- Sla de JSON-key op een veilige plek buiten de webroot op
- Gebruik per omgeving een ander Service Account (ontwikkeling, staging, productie)
- Monitor het gebruik van deze accounts in de Google Cloud Console
- Log verdachte activiteit en stel waarschuwingen in
Referentie omgevingsvariabelen
Geavanceerde configuratie
JSON-string opslaan in een omgevingsvariabele
In plaats van het JSON-bestand als apart bestand op te slaan, kun je de JSON-string opslaan als omgevingsvariabele. Dit is geschikt voor CI/CD-omgevingen zoals GitHub Actions. Stap 1: voeg de JSON-string toe aan.env
config/google.php
Problemen oplossen
Veelvoorkomende fouten
Fout “caller does not have permission”- Controleer of de spreadsheet is gedeeld met het e-mailadres van het Service Account
- Controleer bij schrijfoperaties of de rechten minimaal Bewerker zijn
- Controleer of het pad naar het JSON-bestand klopt
- Controleer of het bestand bestaat en door de webserver kan worden gelezen
- Controleer of de Google Sheets API en Google Drive API zijn ingeschakeld in de Google Cloud Console
- Wacht na het inschakelen van de API’s enkele minuten
- Controleer of het JSON-keybestand geldig en niet beschadigd is
- Controleer of het Service Account niet is verwijderd of uitgeschakeld
- Controleer of het project-ID overeenkomt met je Google Cloud-project