Cas d’usage
- Accès de serveur à serveur — l’application accède à Sheets sans intervention de l’utilisateur
- Systèmes automatisés — jobs en arrière-plan, tâches cron, rapports automatiques
- Feuilles de calcul fixes — contrôle de feuilles de calcul spécifiques
- Environnement de production — fonctionne de manière fiable sans flux de consentement utilisateur
Prérequis
- Un projet Google Cloud Console
- Google Sheets API et Google Drive API activés
- Droits d’administration sur le projet
Configuration
Créer un projet Google Cloud
- Accédez à la Google Cloud Console
- Créez un nouveau projet ou sélectionnez-en un existant
- Notez l’ID du projet
Activer les API requises
- Rendez-vous dans APIs & Services > Library
- Recherchez et activez les API suivantes :
- Google Sheets API
- Google Drive API
Créer un compte de service
- Rendez-vous dans APIs & Services > Credentials
- Cliquez sur Create Credentials > Service Account
- Saisissez les détails du compte de service :
- Service account name : un nom descriptif (par exemple « Laravel Sheets App »)
- Service account ID : généré automatiquement
- Description : facultatif
- Cliquez sur Create and Continue
- Ignorez les deux sections optionnelles et cliquez sur Done
Générer une clé de compte de service
- Sur la page Credentials, cliquez sur le compte de service créé
- Rendez-vous dans l’onglet Keys
- Cliquez sur Add Key > Create new key
- Sélectionnez le format JSON
- Cliquez sur Create
- Le fichier JSON est téléchargé automatiquement
Enregistrer le fichier JSON
- Déplacez le fichier JSON téléchargé vers
storage/app/ - Renommez-le en
google-service-account.json - Important : ajoutez-le au
.gitignorepour l’exclure du contrôle de version
Partager les feuilles de calcul
Pour chaque feuille de calcul Google Sheets :
- Ouvrez-la dans Google Sheets
- Cliquez sur le bouton Partager
- Copiez le champ
client_emaildu fichier JSON - Partagez avec cette adresse e-mail (par exemple :
[email protected]) - Sélectionnez les autorisations :
- Lecteur — lecture seule
- Éditeur — lecture et écriture
- Propriétaire — accès complet (déconseillé)
Utilisation
Une fois la configuration terminée, le compte de service est utilisé automatiquement. Aucune configuration de jeton d’accès n’est requise.Bonnes pratiques de sécurité
1. Limiter les autorisations du compte de service
- Partagez uniquement les feuilles de calcul nécessaires
- Utilisez Éditeur plutôt que Propriétaire
- Auditez régulièrement les autorisations d’accès
2. Stockage sécurisé de la clé
- N’incluez pas la clé du compte de service dans le contrôle de version
- Excluez-la impérativement via
.gitignore - En production, stockez-la dans un emplacement sécurisé hors du web root
- Effectuez une rotation régulière des clés
3. Déploiement en production
Mesures de sécurité supplémentaires :- Stockez la clé JSON dans un emplacement sécurisé hors du web root
- Utilisez des comptes de service distincts par environnement (développement, staging, production)
- Surveillez l’utilisation de ces comptes dans la Google Cloud Console
- Journalisez et alertez sur les activités suspectes
Référence des variables d’environnement
| Variable | Description | Exemple |
|---|---|---|
GOOGLE_SERVICE_ENABLED | Active l’authentification par compte de service | true |
GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION | Chemin vers le fichier JSON | storage/app/google-service-account.json |
Configuration avancée
Stocker la chaîne JSON dans une variable d’environnement
Au lieu de stocker le fichier JSON comme fichier séparé, vous pouvez stocker la chaîne JSON dans une variable d’environnement. Cela convient aux environnements CI/CD comme GitHub Actions. Étape 1 : ajouter la chaîne JSON au.env
config/google.php
Dépannage
Erreurs courantes
Erreur « caller does not have permission »- Vérifiez que la feuille de calcul est bien partagée avec l’adresse e-mail du compte de service
- Pour les opérations d’écriture, vérifiez que les autorisations sont au moins Éditeur
- Vérifiez que le chemin du fichier JSON est correct
- Vérifiez que le fichier existe et est lisible par le serveur web
- Vérifiez que Google Sheets API et Google Drive API sont activés dans la Google Cloud Console
- Attendez quelques minutes après l’activation de l’API
- Vérifiez que le fichier de clé JSON est valide et non corrompu
- Vérifiez que le compte de service n’a pas été supprimé ou désactivé
- Vérifiez que l’ID du projet correspond bien au projet Google Cloud