Usando Planilhas Google com Eloquent
- Erick Giorgio
- 01 Jan 2023

Instalação
composer require grosv/eloquent-sheets
composer require revolution/laravel-google-sheets
Configuração
Este pacote fornece um modelo eloquente que fica em cima de uma planilha do Google. Para que funcione, há duas coisas que sua planilha precisa ter. Uma é uma linha de cabeçalho que contém o nome de suas colunas. O padrão é a linha 1 (a linha superior), mas pode ser qualquer linha na planilha. A outra é uma coluna de chave primária. Eloquent assume que sua coluna de chave primária é nomeada id. Caso contrário, defina-o no seu modelo como faria normalmente.
Rode
php artisan vendor:publish --provider="PulkitJalan\Google\GoogleServiceProvider" --tag="config"
E configure o arquivo
google.php
// OAuth
'client_id' => env('GOOGLE_CLIENT_ID', ''),
'client_secret' => env('GOOGLE_CLIENT_SECRET', ''),
'redirect_uri' => env('GOOGLE_REDIRECT', ''),
'scopes' => [\Google_Service_Sheets::DRIVE, \Google_Service_Sheets::SPREADSHEETS],
'access_type' => 'online',
'approval_prompt' => 'auto',
'prompt' => 'consent', //"none", "consent", "select_account" default:none// or Service Account
'file' => storage_path('credentials.json'),
'enable' => env('GOOGLE_SERVICE_ENABLED', true),
Siga os passos descritos na documentão
Siga os passos de configuração na documentação
https://github.com/kawax/laravel-google-sheets
Uso
Exemplo de uma tabela de usuários.

Configurando no laravel
Vamos criar um novo model para esta tabela
php artisan make:sheet-model
1.Digite o caminho completo para o diretório em que deseja criar o arquivo de modelo (o padrão é app_path ()):
2. Digite o nome que você deseja usar para a sua classe de modelo:
UserSheet
3. Cole o URL de edição da sua planilha do Google.
4. Confirme se o caminho e o nome completo da classe estão corretos:
5. E você receberá o modelo de uma macro que pode ser anexada à sua planilha que informará ao site que a planilha foi alterada, portanto, um novo cache deve ser criado.

O resultado da classe será algo
useGrosv\EloquentSheets\SheetModel;
classUserSheetextendsSheetModel
{
protected$spreadsheetId ='id????';
protected$sheetId ='0';
protected$headerRow ='1';
}
Exemplo
$userSheet =newUserSheet();
$userSheet->first();
Ira retornar algo como
App\UserSheet]8;;file:///.... {#1420
#spreadsheetId: "123456-msjNDIXeSjPfRE_6pQ"
#sheetId: "0"
#headerRow: "1"
#rows: []
+primaryKey: "id"
+cacheName: "sushi-app-user-sheet"
#headers: null
#connection: null
#table: "user_sheets"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:3 [
"id" => "1.0"
"name" => "name1"
"mail" => "mail1@mail;com"
]
#original: array:3 [
"id" => "1.0"
"name" => "name1"
"mail" => "mail1@mail;com"
]
#changes: []
#casts: []
#classCastCache: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [
0 => "*"
]
}
Com o modelo do Google Sheet, você pode usar os recursos eloquentes básicos; no entanto, o modelo pode usar apenas métodos de leitura e l