Google Sheets + Laravel

Google

  1. Entrar a https://developers.google.com/console

  2. (Opcional) Crear nuevo proyecto en https://console.cloud.google.com/projectcreate

  3. Configurar el content screen como aplicación externa y tu correo de contacto en https://console.cloud.google.com/apis/credentials/consent

  4. Crear un OAuth client ID tipo Web application: https://console.cloud.google.com/apis/credentials/oauthclient

  5. Pegar en .env las claves en sus correspondientes campos

     GOOGLE_CLIENT_ID=
     GOOGLE_CLIENT_SECRET=
    
  6. Crear una credencial de servicios en con rol de propietario (owner) https://console.cloud.google.com/iam-admin/serviceaccounts/create

  7. Copiar la el correo de la cuenta de servicios de https://console.cloud.google.com/apis/credentials

  8. Dar acceso a ese correo en el archivo de Google Sheets con los permisos correspondientes

  9. Entra a https://console.cloud.google.com/iam-admin/serviceaccounts

  10. Da clic en los puntos suspensivos y elige Manage keys

  11. Selecciona ADD KEY, Create new key, JSON, CREATE

  12. Guarda la llave JSON en la carpeta storage de tu proyecto de Laravel

  13. Agrega a .env las siguientes variables de entorno

    GOOGLE_SERVICE_ENABLED=true
    GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION=../storage/credentials.json
    
  14. En https://developers.google.com/console, habilitar las APIs

    1. Google Drive API

    2. Google Sheets API

Laravel

  1. Instalar laravel-google-sheets

     composer require revolution/laravel-google-sheets
    
  2. Publicar configuración

     php artisan vendor:publish --tag="google-config"
    
  3. En config/google.php especifica los scopes

     // ...
     'scopes' => [\Google\Service\Sheets::DRIVE, \Google\Service\Sheets::SPREADSHEETS],
     // ...
    
  4. Guardar como colección el contenido de una hoja de una Google Sheet

     use Sheets;
     // ...
     $sheets = Sheets::spreadsheet('id_archivo_google_sheets')->sheet('nombre_de_la_hoja')->get();
     $header = $sheets->pull(0);
     $coleccion = Sheets::collection($header, $sheets);
    

Recursos

Did you find this article valuable?

Support Alberto Benavides by becoming a sponsor. Any amount is appreciated!