> ## 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

> Gebruik de Google Sheets API v4 in Laravel. Een vloeiende en intuïtieve interface.

Een Laravel-pakket voor de Google Sheets API v4. Het verbergt de complexiteit van de Google PHP-clientbibliotheek en biedt een intuïtieve, expressieve method-chaining-API.

## Kenmerken

* **Ondersteuning voor meerdere authenticatiemethoden** — OAuth 2.0 (toegang per gebruiker), Service Account (server-naar-server-communicatie), API-key (openbare data)
* **Vloeiende API** — intuïtieve databewerkingen via method chaining
* **Laravel Collection-integratie** — zet Google Sheets-data om naar Laravel Collections voor eenvoudige arrayverwerking
* **Uitbreidbaarheid** — voeg custom methods toe aan de facade via het macrosysteem
* **Google Drive-integratie** — spreadsheets beheren en weergeven

## Veelvoorkomende gebruiksscenario's

* **Gebruikersdashboards** — Google Sheets-data weergeven en bewerken
* **Data importeren/exporteren** — grote hoeveelheden data verplaatsen tussen je Laravel-app en Google Sheets
* **Automatische rapportgeneratie** — rapporten programmatisch genereren en bijwerken
* **Multi-user-applicaties** — gebruikers beheren hun eigen Google Sheets

## Ontwerpfilosofie

Het hoofddoel van dit pakket is **lezen uit Google Sheets**. In plaats van vooraf gedetailleerde voorwaarden op te geven, is het ontwerp erop gericht eerst alle data op te halen als Laravel Collection en die daarna aan de Laravel-kant te verwerken.

## Systeemvereisten

* PHP >= 8.3
* Laravel >= 12.0

## Installatie

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

  <Step title="Configuratiebestand publiceren">
    ```bash theme={null}
    php artisan vendor:publish --tag="google-config"
    ```
  </Step>

  <Step title="Google API's inschakelen">
    Schakel in de [Google Cloud Console](https://console.cloud.google.com/) de volgende API's in:

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

  <Step title="Authenticatiemethode kiezen en configureren">
    Kies en configureer een van de drie methoden:

    * [Service Account](/nl/packages/laravel-google-sheets/service-account) — voor server-naar-server-communicatie en geautomatiseerde taken
    * [OAuth 2.0](/nl/packages/laravel-google-sheets/oauth) — voor toegang per gebruiker
    * API-key — alleen openbare data
  </Step>
</Steps>

## De juiste authenticatiemethode kiezen

| Methode             | Gebruik                                         | Gebruikersactie     | Toegangsbereik                      | Moeilijkheid |
| ------------------- | ----------------------------------------------- | ------------------- | ----------------------------------- | ------------ |
| **Service Account** | Server-naar-server-communicatie, automatisering | Niet nodig          | Gedeelde spreadsheets               | Gemiddeld    |
| **OAuth 2.0**       | Gebruikersgerichte apps                         | Toestemming vereist | Individuele sheets van de gebruiker | Hoog         |
| **API-key**         | Alleen openbare data                            | Niet nodig          | Alleen openbare spreadsheets        | Laag         |

## Basisgebruik

Neem als voorbeeld de volgende spreadsheetstructuur.

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

Spreadsheet-URL: `https://docs.google.com/spreadsheets/d/{spreadsheetID}/...`

Haal het `spreadsheetId` uit de URL.

### Service Account

Als je Service Account-authenticatie gebruikt, hoef je geen token in te stellen.

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

// Service Account-authenticatie gebeurt automatisch bij de configuratie
$values = Sheets::spreadsheet('spreadsheetId')->sheet('Sheet 1')->all();
// [
//   ['id', 'name', 'mail'],
//   ['1', 'name1', 'mail1'],
//   ['2', 'name2', 'mail2']
// ]
```

### OAuth

Als je OAuth-authenticatie gebruikt, moet je het accesstoken van de gebruiker instellen.

```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() geeft een array terug
$values = Sheets::setAccessToken($token)->spreadsheet('spreadsheetId')->sheet('Sheet 1')->all();
// [
//   ['id', 'name', 'mail'],
//   ['1', 'name1', 'mail1'],
//   ['2', 'name1', 'mail2']
// ]
```

### Sheetwaarden ophalen met de header als sleutel (aanbevolen)

Deze aanpak raden we aan: de conversie naar een collection is eenvoudig en de verdere verwerking is flexibel.

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

// get() geeft een Laravel Collection terug
$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
```

### A1-notatie gebruiken

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

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

### Over A1-notatie

A1-notatie is de standaardmanier om cellen of bereiken aan te duiden in Google Spreadsheets (bijvoorbeeld "A1", "A1:B2").

* "A1" verwijst naar de cel in kolom A, rij 1.
* "A1:B2" verwijst naar het (rechthoekige) bereik van cel A1 tot en met B2.
* "A:B" verwijst naar alle rijen in kolommen A en B.

Als je niet vertrouwd bent met A1-notatie, of als je bereiken dynamisch of complex zijn, is het vaak eenvoudiger om alle data op te halen en die daarna te verwerken/filteren met Laravel Collections.

## Volgende stappen

* [Service Account-authenticatie](/nl/packages/laravel-google-sheets/service-account) — de meest gebruikte methode
* [OAuth 2.0-authenticatie](/nl/packages/laravel-google-sheets/oauth) — toegang per gebruiker
* [laravel-google-sheets](https://github.com/invokable/laravel-google-sheets)
* [Demoproject](https://github.com/invokable/google-sheets-project) — voorbeelden voor Laravel 5.5 t/m 13
* [Gerelateerd pakket: Google Search Console API for Laravel](https://github.com/invokable/laravel-google-searchconsole)

## Live demo

Je kunt de werking in de praktijk bekijken op de [Laravel Google Sheets-demo](https://sheets.kawax.biz/).


## Related topics

- [Service Account-authenticatie - Google Sheets API for Laravel](/nl/packages/laravel-google-sheets/service-account.md)
- [OAuth 2.0-authenticatie - Google Sheets API for Laravel](/nl/packages/laravel-google-sheets/oauth.md)
- [Laravel Console Starter](/nl/packages/laravel-console-starter/index.md)
- [Laravel Socialite (sociale authenticatie)](/nl/socialite.md)
- [Laravel Cashier (Stripe)](/nl/cashier.md)
