İş süreçlerinde Google Sheets’in sunduğu esneklik, birçok uygulamanın temelini oluşturuyor. Kullanıcı yönetimi, veri dışa aktarma ve hatta otomatik senkronizasyon gereksinimleri için bu platforma güvenen geliştiriciler, artık Laravel tabanlı projelerinde daha verimli çalışabilirler.
olamilekan/laravel-google-sheets paketinin v1.1.0 sürümü, gerçek dünya uygulamalarında karşılaşılan yaygın zorluklara yönelik yeni özellikler sunuyor. Bu güncellemeyle birlikte, veri senkronizasyonu daha güvenilir, yönetilebilir ve hata toleranslı hale geliyor. Geriye dönük uyumlu olan bu sürüm, 17 commit değişikliği içeriyor ve Laravel’in farklı sürümlerinde sorunsuz çalışma imkanı sağlıyor.
Laravel 13 ve Önceki Sürümlerde Destek
Yeni paket, Laravel’in 10, 11, 12 ve 13 sürümlerinde çalışabiliyor. Bu özellik, geliştiricilerin farklı projelerde aynı paketi kullanmasına olanak tanırken, yükseltme sürecini de basitleştiriyor. Eski ve yeni Laravel uygulamalarında tutarlılık sağlamak artık daha kolay.
Veri Senkronizasyonunda Yeni Yaklaşımlar
Veri senkronizasyonunda en büyük zorluklardan biri, değişiklikleri takip etmek ve olası çakışmaları yönetmektir. v1.1.0, bu süreci kolaylaştıran beş farklı senkronizasyon yöntemi sunuyor:
- Model tabanlı senkronizasyon: Veritabanı kayıtlarını doğrudan Google Sheets’e aktarmak için.
- CSV işlemleri: Dışa aktarma ve içe aktarma işlemleri için.
- API entegrasyonu: Uzak API’lerden veri çekme ve gönderme için.
- İki yönlü senkronizasyon: Veri değişikliklerinin her iki yönde de senkronize edilmesi için.
- Kuru çalıştırma (dry run): Gerçek senkronizasyon yapılmadan önce değişiklikleri önizlemek için.
Kuru Çalıştırma ile Önizleme
Örneğin, kullanıcı verilerini senkronize etmek istiyorsunuz. Yeni özellik sayesinde, değişiklikleri gerçekleştirmeden önce bir önizleme yapabilirsiniz:
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();Bu komut, yeni, değiştirilen, silinen, geçersiz ve çakışan satırları ayrı ayrı gösterir. Örneğin:
[
'new' => 1,
'changed' => 2,
'deleted' => 0,
'invalid' => 1,
'conflicts' => 0,
]Ayrıca, hangi alanların karşılaştırılacağını da belirleyebilirsiniz:
$preview = GoogleSheets::connection('users')
->diffAgainst(User::query(), key: 'email')
->only(['name', 'role'])
->except(['updated_at'])
->preview();Bu özellik, özellikle yönetici panellerinde veya onay akışlarında kullanışlıdır.
Çift Yönlü Senkron ve Çatışma Yönetimi
Veri senkronizasyonunda en karmaşık durumlardan biri, aynı anda hem uygulama hem de spreadsheet üzerinde yapılan değişiklikleri yönetmektir. v1.1.0, bu süreci kolaylaştırmak için dört farklı çatışma çözme stratejisi sunuyor:
app_wins(uygulama kazansın)sheet_wins(spreadsheet kazansın)skip(atla)fail(hata ver)
Örneğin, kullanıcı rollerini senkronize ederken çatışmaları engellemek için:
$report = GoogleSheets::connection('users')
->syncTwoWay(User::class, keyColumn: 'email', options: [
'conflict' => 'sheet_wins',
]);Her senkronizasyon işlemi, detaylı bir rapor döndürür:
$report->counts(); // Toplam işlem sayısı
$report->created(); // Yeni eklenen kayıtlar
$report->updated(); // Güncellenen kayıtlar
$report->conflicts(); // Çakışan kayıtlar
$report->errors(); // Hatalı kayıtlarHata Yönetiminde Yenilikler
Doğrulama hatalarını yönetmek, veri senkronizasyonunda sık karşılaşılan bir başka zorluktur. Yeni sürüm, hata raporlarını doğrudan bir hata sayfasına yazabilme özelliği sunuyor. Böylece, kullanıcılar hatalı satırları daha kolay tespit edebiliyor ve düzeltilebiliyor.
$validRows = GoogleSheets::connection('users')->validateWithErrorSheet([
'name' => ['required', 'string'],
'email' => ['required', 'email'],
]);Kuyruğa Alma ve Geri Dönüş Mekanizmaları
Uzun süren senkronizasyon işlemleri, uygulama performansını olumsuz etkileyebilir. v1.1.0, bu işlemleri arka planda çalıştırmak için kuyruğa alma özelliği sunuyor:
GoogleSheets::connection('users')
->queueSync('syncFromModel', [User::class, 'email'], queue: 'imports');Ayrıca, geçici API hatalarında otomatik yeniden deneme ve üstel geri çekilme (exponential backoff) desteği de bulunuyor. Bu özellik, Google Sheets API’sinin geçici hata durumlarında (örneğin, kota aşımı) uygulamanın dayanıklılığını artırıyor.
// `config/google-sheets.php`'retry' => [ 'enabled' => true, 'attempts' => 3, 'delay' => 250, 'max_delay' => 5000, ],
Çalışma zamanında da bu ayarları değiştirebilirsiniz:
$rows = GoogleSheets::withRetries(attempts: 5, delay: 500)->all();
$rows = GoogleSheets::withoutRetries()->all();Test ve Geliştirme Kolaylıkları
Yeni sürüm, geliştiricilerin paketi test ederken gerçek API’lere bağlı kalmadan çalışmasına olanak tanıyan sahte (fake) modüller sunuyor. Bu sayede, uygulamanızın davranışını doğrularken API kotası sorunlarıyla karşılaşmazsınız.
use Olamilekan\GoogleSheets\Facades\GoogleSheets;
$fake = GoogleSheets::fake([
'users' => [
['name' => 'Alice', 'email' => 'alice@example.com'],
],
]);
GoogleSheets::connection('users')->appendAssoc([
['name' => 'Bob', 'email' => 'bob@example.com'],
]);
$fake->assertAppended('users', [
'name' => 'Bob',
'email' => 'bob@example.com',
]);Geleceğe Yönelik Bakış
Google Sheets ile veri senkronizasyonu, özellikle iş akışlarının dijitalleştiği günümüzde geliştiriciler için vazgeçilmez bir araç haline geldi. v1.1.0 sürümüyle birlikte, Laravel projelerinde bu entegrasyon daha güvenilir, yönetilebilir ve esnek hale geliyor. Gelecekteki güncellemelerin, özellikle yapay zeka destekli veri analizi ve otomatikleştirilmiş senkronizasyon gibi alanlarda daha da yenilikçi çözümler sunması bekleniyor.
Yapay zeka özeti
Laravel projelerinizde Google Sheets kullanımını geliştirin. Yeni v1.1.0 sürümüyle veri senkronizasyonu, hata yönetimi ve test kolaylıkları hakkında detaylı bilgiler.