Laravel ve Google Sheets Entegrasyonu
Laravel uygulamaları, genellikle iş akışlarının başlangıç noktası olan Google Sheets ile entegrasyon gerektirir. Bu, genellikle içe aktarımlar, dışa aktarımlar, kullanıcı yönetimindeki tablolar ve otomatik senkronizasyon talepleri anlamına gelir.
olamilekan/laravel-google-sheets v1.1.0, gerçek dünya iş akışlarını yönetmek için bir dizi özellik ekler:
- Laravel 13 desteği
- İthalat farkı önizlemeleri
- Model, CSV, API ve iki yönlü senkronizasyon yöntemleri
- Dry-run senkronizasyon komutu
- Kullanıcı dostu doğrulama hata sayfaları
- Geçici API hataları için yeniden deneme ve üstel geri adım
- Daha iyi test sahte verileri
- GitHub Actions test matrisleri
Kurulum
Paketin kurulumunu yapmak için aşağıdaki komutu çalıştırın:
composer require olamilekan/laravel-google-sheetsYapılandırmayı yayınlamak için:
php artisan vendor:publish --tag=google-sheets-configLaravel 13 Desteği
Paket artık aşağıdaki Laravel sürümlerini desteklemektedir:
- Laravel 10
- Laravel 11
- Laravel 12
- Laravel 13
İthalat Farkı Önizlemeleri
Şimdi bir ithalat öncesi önizleme yapma imkânı sunuluyor:
use App\Models\User;
use Olamilekan\GoogleSheets\Facades\GoogleSheets;
$preview = GoogleSheets::connection('users')
->diffAgainst(User::query(), key: 'email')
->rules([
'name' => ['required', 'string'],
'email' => ['required', 'email'],
])
->preview();
$preview->counts();Önizleme, satırları aşağıdaki gibi ayırma yeteneğine sahiptir:
- yeni
- değiştirildi
- silindi
- geçersiz
- çelişkiler
Senkronizasyon Yöntemleri
v1.1.0, Google Sheets ile mevcut veri kaynakları arasında veri taşımak için senkronizasyon yardımcıları ekler.
Eloquent’ten Google Sheets’e senkronizasyon:
use App\Models\User;
use Olamilekan\GoogleSheets\Facades\GoogleSheets;
$report = GoogleSheets::connection('users')
->syncFromModel(User::class, keyColumn: 'email', options: [
'columns' => ['name', 'email', 'role'],
'conflict' => 'app_wins',
]);Google Sheets’ten Eloquent’e senkronizasyon:
$report = GoogleSheets::connection('users')
->syncToModel(User::class, keyColumn: 'email');CSV Dosyalarını İthalat ve Dışa Aktarma
CSV dosyalarını dışa aktarmak ve içe aktarmak için aşağıdaki örnekleri izleyebilirsiniz:
$report = GoogleSheets::connection('users')
->importCsv(storage_path('app/users.csv'), keyColumn: 'email');
$report = GoogleSheets::connection('users')
->exportCsv(storage_path('app/users-export.csv'));API Verilerini Sayfaya Senkronizasyon
API verilerini bir sayfaya senkronize etmek için:
$report = GoogleSheets::connection('orders')
->syncFromApi('https://api.example.com/orders', keyColumn: 'order_id', options: [
'data_key' => 'data',
'headers' => ['Authorization' => 'Bearer ' . $token],
]);Aynı Zamanlı Senkronizasyon ve Çelişkileri Yönetme
İki yönlü senkronizasyon yaparken net bir çelişki davranışı belirlemek gerekir:
$report = GoogleSheets::connection('users')
->syncTwoWay(User::class, keyColumn: 'email', options: [
'conflict' => 'fail',
]);Hata Kontrolü ve Geri Alım
Geçici Google Sheets API hataları, üstel geri adım ve dalgalanma ile yeniden denenir:
// config/google-sheets.php
'retry' => [
'enabled' => true,
'attempts' => 3,
'delay' => 250,
'max_delay' => 5000,
],Test Sahte Verileri
Gerçek API’ye erişmeden test edebilirsiniz:
use Olamilekan\GoogleSheets\Facades\GoogleSheets;
$fake = GoogleSheets::fake([
'users' => [
['name' => 'Alice', 'email' => '[email protected]'],
],
]);
GoogleSheets::connection('users')->appendAssoc([
['name' => 'Bob', 'email' => '[email protected]'],
]);
$fake->assertAppended('users', [
'name' => 'Bob',
'email' => '[email protected]',
]);Yükseltme
Paketinizi yükseltmek için:
composer update olamilekan/laravel-google-sheetsBağlantılar
GitHub: github.com/oluwatosinolamilekan/laravel-google-sheets
Paket:
composer require olamilekan/laravel-google-sheetsKaynak: Orijinal Makale


