Passer au contenu principal
L’authentification par compte de service est idéale pour accéder à Google Sheets de serveur à serveur. Aucune interaction utilisateur n’est requise ; l’application elle-même manipule les feuilles de calcul. Elle convient aux tâches automatisées et aux jobs en arrière-plan.

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

1

Créer un projet Google Cloud

  1. Accédez à la Google Cloud Console
  2. Créez un nouveau projet ou sélectionnez-en un existant
  3. Notez l’ID du projet
2

Activer les API requises

  1. Rendez-vous dans APIs & Services > Library
  2. Recherchez et activez les API suivantes :
    • Google Sheets API
    • Google Drive API
3

Créer un compte de service

  1. Rendez-vous dans APIs & Services > Credentials
  2. Cliquez sur Create Credentials > Service Account
  3. 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
  4. Cliquez sur Create and Continue
  5. Ignorez les deux sections optionnelles et cliquez sur Done
4

Générer une clé de compte de service

  1. Sur la page Credentials, cliquez sur le compte de service créé
  2. Rendez-vous dans l’onglet Keys
  3. Cliquez sur Add Key > Create new key
  4. Sélectionnez le format JSON
  5. Cliquez sur Create
  6. Le fichier JSON est téléchargé automatiquement
5

Enregistrer le fichier JSON

  1. Déplacez le fichier JSON téléchargé vers storage/app/
  2. Renommez-le en google-service-account.json
  3. Important : ajoutez-le au .gitignore pour l’exclure du contrôle de version
# À ajouter au .gitignore
storage/app/google-service-account.json
6

Configurer le fichier .env

Ajoutez ce qui suit au fichier .env :
GOOGLE_SERVICE_ENABLED=true
GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION=storage/app/google-service-account.json
7

Configurer les scopes dans config/google.php

'scopes' => [
    \Google\Service\Sheets::SPREADSHEETS,
    \Google\Service\Drive::DRIVE,
],
8

Partager les feuilles de calcul

Pour chaque feuille de calcul Google Sheets :
  1. Ouvrez-la dans Google Sheets
  2. Cliquez sur le bouton Partager
  3. Copiez le champ client_email du fichier JSON
  4. Partagez avec cette adresse e-mail (par exemple : [email protected])
  5. 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.
use Revolution\Google\Sheets\Facades\Sheets;

// Le compte de service est utilisé automatiquement
$values = Sheets::spreadsheet('your-spreadsheet-id')
    ->sheet('Sheet1')
    ->all();

// Référencer par nom de feuille de calcul (nécessite l'accès à Drive API)
$values = Sheets::spreadsheetByTitle('My Spreadsheet')
    ->sheet('Sheet1')
    ->all();

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

VariableDescriptionExemple
GOOGLE_SERVICE_ENABLEDActive l’authentification par compte de servicetrue
GOOGLE_SERVICE_ACCOUNT_JSON_LOCATIONChemin vers le fichier JSONstorage/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
GOOGLE_SERVICE_ENABLED=true
GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION='{"type": "service_account", "project_id": "your-project-id", ...}'
Étape 2 : décoder la chaîne JSON dans config/google.php
// config/google.php
'service' => [
    'enable' => env('GOOGLE_SERVICE_ENABLED', false),
    'file' => json_decode(env('GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION', ''), true),
],
Cette méthode évite d’avoir à stocker un fichier séparé et permet de tout gérer via les variables d’environnement de votre pipeline CI/CD.

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
Erreur « File not found »
  • Vérifiez que le chemin du fichier JSON est correct
  • Vérifiez que le fichier existe et est lisible par le serveur web
Erreur « API not enabled »
  • 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
Erreur « Invalid credentials »
  • 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

Tester la configuration

Route de test pour vérifier la configuration du compte de service :
// routes/web.php
Route::get('/test-sheets', function () {
    try {
        $sheets = Sheets::spreadsheetList();
        return response()->json([
            'status' => 'success',
            'message' => 'L\'authentification par compte de service fonctionne',
            'spreadsheet_count' => count($sheets)
        ]);
    } catch (\Exception $e) {
        return response()->json([
            'status' => 'error',
            'message' => $e->getMessage()
        ]);
    }
});
Accédez à cette route de test pour vérifier que l’authentification par compte de service est correctement configurée.
Dernière modification le 13 juillet 2026