> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Sheets API for Laravel

> Utiliser l'API Google Sheets v4 avec Laravel. Une interface fluide et intuitive.

Package Laravel pour l'API Google Sheets v4. Il masque la complexité de la bibliothèque cliente Google PHP et propose une API intuitive et expressive par chaînage de méthodes.

## Caractéristiques

* **Prise en charge de plusieurs méthodes d'authentification** — OAuth 2.0 (accès individuel utilisateur), Service Account (communication serveur à serveur), clé API (données publiques)
* **API fluide** — Manipulation intuitive des données par chaînage de méthodes
* **Intégration Laravel Collection** — Conversion des données Google Sheets en Laravel Collection. Traitement facile en tableau
* **Extensibilité** — Ajout de méthodes personnalisées à la Facade via le système de macros
* **Intégration Google Drive** — Gestion et listage des feuilles de calcul

## Cas d'utilisation typiques

* **Tableau de bord utilisateur** — Afficher et manipuler les données de Google Sheets
* **Import/export de données** — Transfert massif de données entre l'application Laravel et Google Sheets
* **Génération automatique de rapports** — Générer et mettre à jour des rapports par programme
* **Applications multi-utilisateurs** — Chaque utilisateur gère ses propres Google Sheets

## Philosophie de conception

L'objectif principal de ce package est **la lecture depuis Google Sheets**. Plutôt que de spécifier des conditions détaillées avant la lecture, la conception consiste à d'abord récupérer toutes les données sous forme de Laravel Collection, puis à les traiter côté Laravel.

## Configuration système requise

* PHP >= 8.3
* Laravel >= 12.0

## Installation

<Steps>
  <Step title="Installer via Composer">
    ```bash theme={null}
    composer require revolution/laravel-google-sheets
    ```
  </Step>

  <Step title="Publier le fichier de configuration">
    ```bash theme={null}
    php artisan vendor:publish --tag="google-config"
    ```
  </Step>

  <Step title="Activer les API Google">
    Dans la [Google Cloud Console](https://console.cloud.google.com/), activez les API suivantes :

    * **Google Sheets API**
    * **Google Drive API**
  </Step>

  <Step title="Choisir et configurer la méthode d'authentification">
    Choisissez parmi les 3 méthodes :

    * [Service Account](/fr/packages/laravel-google-sheets/service-account) — pour la communication serveur à serveur et les tâches automatisées
    * [OAuth 2.0](/fr/packages/laravel-google-sheets/oauth) — pour l'accès individuel utilisateur
    * Clé API — pour les données publiques uniquement
  </Step>
</Steps>

## Choix de la méthode d'authentification

| Méthode             | Usage                              | Interaction utilisateur | Portée d'accès                          | Difficulté |
| ------------------- | ---------------------------------- | ----------------------- | --------------------------------------- | ---------- |
| **Service Account** | Serveur à serveur, automatisation  | Aucune                  | Feuilles de calcul partagées            | Moyenne    |
| **OAuth 2.0**       | Applications orientées utilisateur | Consentement requis     | Feuilles individuelles de l'utilisateur | Élevée     |
| **Clé API**         | Données publiques uniquement       | Aucune                  | Feuilles publiques uniquement           | Faible     |

## Utilisation de base

Considérons l'exemple de structure de feuille de calcul suivant.

| id | name  | mail  |
| -- | ----- | ----- |
| 1  | name1 | mail1 |
| 2  | name2 | mail2 |

URL de la feuille : `https://docs.google.com/spreadsheets/d/{spreadsheetID}/...`

Récupérez le `spreadsheetId` depuis l'URL.

### Service Account

Lors de l'utilisation de l'authentification par Service Account, la configuration du token n'est pas nécessaire.

```php theme={null}
use Revolution\Google\Sheets\Facades\Sheets;

// L'authentification Service Account est effectuée automatiquement à la configuration
$values = Sheets::spreadsheet('spreadsheetId')->sheet('Sheet 1')->all();
// [
//   ['id', 'name', 'mail'],
//   ['1', 'name1', 'mail1'],
//   ['2', 'name2', 'mail2']
// ]
```

### OAuth

Lors de l'utilisation de l'authentification OAuth, vous devez configurer le token d'accès de l'utilisateur.

```php theme={null}
use Revolution\Google\Sheets\Facades\Sheets;

$user = $request->user();

$token = [
    'access_token'  => $user->access_token,
    'refresh_token' => $user->refresh_token,
    'expires_in'    => $user->expires_in,
    'created'       => $user->updated_at->getTimestamp(),
];

// all() retourne un tableau
$values = Sheets::setAccessToken($token)->spreadsheet('spreadsheetId')->sheet('Sheet 1')->all();
// [
//   ['id', 'name', 'mail'],
//   ['1', 'name1', 'mail1'],
//   ['2', 'name1', 'mail2']
// ]
```

### Récupérer les valeurs de la feuille avec l'en-tête comme clé (recommandé)

Nous recommandons cette méthode car la transformation en collection est simple et le traitement ultérieur reste flexible.

```php theme={null}
use Revolution\Google\Sheets\Facades\Sheets;

// get() retourne une collection Laravel
$rows = Sheets::sheet('Sheet 1')->get();

$header = $rows->pull(0);
$values = Sheets::collection(header: $header, rows: $rows);
$values->toArray()
// [
//   ['id' => '1', 'name' => 'name1', 'mail' => 'mail1'],
//   ['id' => '2', 'name' => 'name2', 'mail' => 'mail2']
// ]
```

Blade

```php theme={null}
@foreach($values as $value)
  {{ data_get($value, 'name') }}
@endforeach
```

### Utilisation de la notation A1

```php theme={null}
use Revolution\Google\Sheets\Facades\Sheets;

$values = Sheets::sheet('Sheet 1')->range('A1:B2')->all();
// [
//   ['id', 'name'],
//   ['1', 'name1'],
// ]
```

### À propos de la notation A1

La notation A1 est la méthode standard pour désigner une cellule ou une plage dans Google Sheets (ex : « A1 », « A1:B2 »).

* « A1 » désigne la cellule à la colonne A, ligne 1.
* « A1:B2 » désigne la plage (rectangle) allant de la cellule A1 à B2.
* « A:B » désigne toutes les lignes des colonnes A et B.

Si vous n'êtes pas familier avec la notation A1, ou si la plage est dynamique ou complexe, il est souvent plus simple de récupérer toutes les données, puis de les traiter/filtrer après récupération à l'aide des collections Laravel.

## Étapes suivantes

* [Authentification Service Account](/fr/packages/laravel-google-sheets/service-account) — la méthode la plus courante
* [Authentification OAuth 2.0](/fr/packages/laravel-google-sheets/oauth) — accès individuel utilisateur
* [laravel-google-sheets](https://github.com/invokable/laravel-google-sheets)
* [Projet de démo](https://github.com/invokable/google-sheets-project) — exemple compatible de Laravel 5.5 à 13
* [Package associé : Google Search Console API for Laravel](https://github.com/invokable/laravel-google-searchconsole)

## Démo en ligne

Vous pouvez voir le fonctionnement réel sur la [démo Laravel Google Sheets](https://sheets.kawax.biz/).


## Related topics

- [Authentification OAuth 2.0 - Google Sheets API for Laravel](/fr/packages/laravel-google-sheets/oauth.md)
- [Authentification par compte de service - Google Sheets API for Laravel](/fr/packages/laravel-google-sheets/service-account.md)
- [Laravel Console Starter](/fr/packages/laravel-console-starter/index.md)
- [Laravel Socialite (authentification sociale)](/fr/socialite.md)
- [Laravel Cashier (Stripe)](/fr/cashier.md)
