Google Sheets genellikle hızlı bir operasyonel araç olarak başlar. Destek ekibi kullanıcıları bir şablonda takip eder, finans departmanı aylık raporları dışa aktarır veya bir iç gösterge paneli basit bir hesap tabloları arka planına ihtiyaç duyar. Zorluk, birkaç API çağrısını aştığında, bu iş akışını Laravel dostu hale getirmektir.
Bu paket, Google Sheets API’sini yaygın uygulama görevleri için akıcı bir Laravel API’si ile sarmalar: satırları içe aktarma, raporları dışa aktarma, birden fazla hesap tablosu bağlantısını yönetme, okuma önbellekleme, sekmeleri biçimlendirme ve Google’a başvurmadan test etme.
Kurulum
Kurulum
composer require olamilekan/laravel-google-sheets
php artisan vendor:publish --tag=google-sheets-config
Hizmet hesabı kimlik bilgileri yolunu ekleyin:
GOOGLE_SHEETS_CREDENTIALS_PATH=/path/to/service-account.json
Ardından, isimlendirilmiş hesap tablosu bağlantılarını yapılandırın:
'sheets' => [
'users' => [
'spreadsheet_id' => env('GOOGLE_SHEETS_USERS_SPREADSHEET_ID'),
'sheet' => 'Users',
],
'reports' => [
'spreadsheet_id' => env('GOOGLE_SHEETS_REPORTS_SPREADSHEET_ID'),
'sheet' => 'Monthly',
],
],
Google Sheets’ten Kullanıcıları İçe Aktarma
Google Sheets’ten Kullanıcıları İçe Aktarma
Basit bir içe aktarma için, isimlendirilmiş bir bağlantıdan satırları okuyun:
$rows = GoogleSheets::connection('users')->all();
Tekrar kullanılabilir bir içe aktarma için bir içe aktarma sınıfı oluşturun:
use App\Models\User;
use Olamilekan\GoogleSheets\Imports\SheetImport;
class UsersImport extends SheetImport
{
public function rules(): array
{
return ['email' => ['required', 'email']];
}
public function model(array $row): User
{
return User::updateOrCreate(
['email' => $row['email']],
['name' => $row['name']]
);
}
}
Bunu koddan çalıştırın:
GoogleSheets::import(new UsersImport(), 'users');
Ya da Artisan’dan:
php artisan google-sheets:sync "App\\Imports\\UsersImport" users
Raporları Google Sheets’e Dışa Aktarma
Raporları Google Sheets’e Dışa Aktarma
Dışa aktarma sınıfları, raporlama mantığını kontrolörlerden ve komutlardan ayırır:
use App\Models\Report;
use Olamilekan\GoogleSheets\Exports\SheetExport;
class ReportsExport extends SheetExport
{
public bool $replace = true;
public function headings(): array
{
return ['Date', 'Name', 'Total'];
}
public function collection()
{
return Report::query()->latest()->get()->map(fn (Report $report) => [
$report->created_at->toDateString(),
$report->name,
$report->total,
]);
}
}
Ardından dışa aktarın:
GoogleSheets::export(new ReportsExport(), 'reports');
Başlık Bilgisine Sahip Ekleme ve Güncelleme
Başlık Bilgisine Sahip Ekleme ve Güncelleme
Hesap tablolarının genellikle başlıkları vardır. Her hücreyi manuel olarak sıralamak yerine, ilişkilendirilmiş dizileri ekleyin:
GoogleSheets::connection('users')->appendAssoc([
['name' => 'Alice', 'email' => '[email protected]', 'role' => 'admin'],
]);
Bir anahtar sütunla satırları güncelleyin:
GoogleSheets::connection('users')->upsert('email', [
['name' => 'Alice Updated', 'email' => '[email protected]', 'role' => 'owner'],
['name' => 'Bob', 'email' => '[email protected]', 'role' => 'user'],
]);
Doğrulama ve Gerekli Başlıklar
Doğrulama ve Gerekli Başlıklar
Kötü hesap tablosu verilerini uygulamanıza ulaşmadan önce yakalayın:
GoogleSheets::connection('users')->requireHeaders(['name', 'email', 'role']);
$rows = GoogleSheets::connection('users')->validate([
'name' => ['required', 'string'],
'email' => ['required', 'email'],
]);
Çoklu Bağlantı İş Akışları
Çoklu Bağlantı İş Akışları
İsimlendirilmiş bağlantılar, iş akışlarını ayırmayı kolaylaştırır:
$users = GoogleSheets::connection('users')->all();
GoogleSheets::connection('reports')->append([
['2026-05-17', 'Monthly Revenue', 15000],
]);
Önbellekleme
Önbellekleme
Önbellekleme, Laravel’in önbellek sistemi ile etkinleştirilir:
GOOGLE_SHEETS_CACHE_ENABLED=true
GOOGLE_SHEETS_CACHE_STORE=redis
GOOGLE_SHEETS_CACHE_TTL=600
Ya da her çağrı başına açın:
$rows = GoogleSheets::connection('users')->enableCache(300)->all();
Yazma işlemleri olduğunda, paket, o hesap tablosu için hatırlanan okuma önbellek anahtarlarını temizler, böylece daha sonraki okumalar güncellenebilir.
Biçimlendirme, Formüller ve İsimlendirilmiş Aralıklar
Biçimlendirme, Formüller ve İsimlendirilmiş Aralıklar
Raporlar genellikle yalnızca ham veriden daha fazlasını gerektirir:
GoogleSheets::connection('reports')
->sheet('Monthly')
->boldHeader()
->freezeRows()
->autoResizeColumns(1, 4);
GoogleSheets::connection('reports')->append([
['Total', GoogleSheets::formula('SUM(C2:C100)')],
]);
$summary = GoogleSheets::connection('reports')
->namedRange('MonthlySummary')
->get();
Test Etme
Test Etme
Testlerinizde Google Sheets’i taklit edebilirsiniz:
$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]']);
Yararlı Komutlar
Yararlı Komutlar
php artisan google-sheets:list users
php artisan google-sheets:clear reports --sheet=Monthly --range=A2:D100
php artisan google-sheets:sync "App\\Exports\\ReportsExport" reports
Kapanış
Kapanış
Hedef, Google Sheets’i doğal bir Laravel entegrasyonu gibi hissettirmektir: basit okuma ve yazılarda akıcı, içe aktarma ve dışa aktarma sınıfları için yapılandırılmış, üretim kullanımında önbellek farkında ve testlerde sahte yapılabilir.
Daha fazla bilgi için GitHub’da okuyabilirsiniz: github.com/oluwatosinolamilekan/laravel-google-sheets
Kaynak: Orijinal Makale


