E-Tablo & Firebase Entegrasyonu Bildirim Yönetim Kılavuzu
Google E-Tablolar (Sheets) üzerinden anlık ve resimli push bildirimlerinizi yönetmek, Apps Script zaman ayarlı otomatik gönderim alt yapısını kurmak için hazırlanan etkileşimli teknik mimari kılavuzudur.
Mimarî Yapı
Çift sekme entegrasyonu
Zamanlayıcılar
15 dk hassas tetikleme
FCM v1 Güvenliği
JWT OAuth2 imzalama
Otomasyon
Mükerrer gönderim engeli
Bu Sistem Tam Olarak Nedir?
Uygulamanıza bildirim gönderme sürecini karmaşık sunucu kodlarından ve panellerinden kurtarıp, herkesin bildiği Google E-Tablolar (Excel) arayüzüne taşıyan tam otomatik bir altyapıdır. Sisteme entegre edilen özel bir Apps Script kodu, tablonuza yazdığınız gün, saat, başlık ve mesajları saniyesi saniyesine takip eder. Vakti gelen mesajı alır ve Firebase (FCM v1) üzerinden doğrudan kullanıcılarınızın telefonuna resimli bir anlık bildirim (Push Notification) olarak yollar. Kısacası; siz sadece Excel doldurursunuz, gerisini sistem kendi kendine halleder.
Sistemin Amacı ve En Büyük Avantajları
Firebase Konsol Derdine Son
Her bildirim atmak istediğinizde Firebase paneline giriş yapıp karmaşık menüler arasında kaybolmanıza gerek yok. Çok daha pratik ve kullanışlı olan Google E-Tablolar (Excel) arayüzünden tüm bildirimleri saniyeler içinde planlayın ve yönetin.
Uyuyan Kullanıcıları Geri Kazanın
Uygulamanızı indirip çok ilgisini çekmediği için kenara atan veya girmeyi unutan kullanıcılar için otomasyon kurun. Siz hiçbir şey yapmasanız bile uygulamanız kendi kendini hatırlatır ve aktif kullanıcı (retention) oranınızı canlı tutar.
Kurulum ve Yapılandırma Adımları
Sistemin kusursuz çalışması için Google E-Tablo entegrasyonunu, Apps Script kod yüklemesini, dakikalık otomatik tetikleyiciyi ve mobil/Firebase ayarlarını bu sırayla tamamlayın.
01 E-Tablo Veri Tabanı Mimarisi (Adım 1)
Sistemin kararlı çalışması için Google E-Tablonuzda mutlaka "Sürekli" ve "TekSeferlik" adlarında iki ayrı sekme bulunmalıdır. Kolon harfleri ve adları sistem tarafından birebir okunmaktadır. Aşağıdaki etkileşimli tablodan sütunları inceleyebilirsiniz.
E-Tablo Veri Mimarisi Önizlemesi
Google E-Tablolar Sayfa Formatı (Gerçek Görünüm)
Sütun A: Gün
E-Tablo kolon gereksinimleri ve yazılım entegrasyon kuralları
Sütun İşlevi ve Görevi:
Bildirimin haftalık hangi gün gideceği (Düz Metin olarak kaydedilir). Örn: "Pazartesi", "Salı" vb.
Örnek Hücre Değeri:
02 Apps Script (Kod) Kurulumu (Adım 2)
E-Tablonuz ile Firebase arasında köprü görevi görecek olan Apps Script kodunun kurulumu için aşağıdaki adımları sırasıyla takip edin:
- Google E-Tablonuzda üst menüden Uzantılar > Apps Script seçeneğine tıklayın.
- Varsayılan kodların tamamını silip aşağıdaki kararlı Google Apps Script kodunu yapıştırın.
- Koddaki
FIREBASE_CONFIGnesnesini kendi Firebase Service Account JSON dosyası bilgilerinizle doldurun.
03 ADIM 3: Otomasyonu Başlatma (Tetikleyici Ayarları)
Kodun tablodaki saatleri sürekli kontrol etmesi için bir tetikleyici (Trigger) kurmalıyız. Kodda ±2 dakikalık tolerans payı ayarlanmıştır, bu yüzden tetikleyici dakikada bir çalışmalıdır.
Tetikleyiciler Ekranına Geçiş
Apps Script ekranında sol menüden ⏰ (Tetikleyiciler - Triggers) ikonuna tıklayın.
Yeni Tetikleyici Ekleme
Sağ alttaki Tetikleyici Ekle butonuna basın.
Google Güvenlik İzinlerinin Verilmesi
Kaydet'e basın. Ekrana Google güvenlik uyarısı gelirse Gelişmiş > ... projesine git (Güvenli değil) diyerek izinleri onaylayın.
Eksiksiz Yapılacak Ayarlar
04 ADIM 4: Yazılımcı İçin Yönergeler (Firebase & Mobil)
Bu bölüm doğrudan mobil/backend yazılımcısına iletilmeli ve entegrasyon sırasında eksiksiz uygulanmalıdır (Yönerge adımlarına tıklayarak detayları görebilirsiniz):
Firebase Console > Project Settings > Service Accounts sekmesine gidin. "Generate new private key" diyerek .json dosyasını indirin. Bu dosyanın içindeki project_id, client_email ve private_key değerlerini Apps Script'in en üstündeki FIREBASE_CONFIG içine birebir kopyalayın.
Tablodaki "Hedef" sütunu Firebase Topics mimarisiyle çalışır (/topics/hedef_adi). Uygulama başlatıldığında, kullanıcının hesap durumuna göre cihazı mutlaka ilgili Topic'e abone etmelisiniz.
Apple cihazlarda bildirim sesi çıkması ve ikon üzerinde kırmızı sayının (badge) belirmesi için iOS projesinde Push Notifications ve Background Modes > Remote notifications yetkilerinin açık olduğundan emin olun.
Eğer tabloda I sütununda (TekSeferlik sayfası durum) "Gönderildi" yerine "HATA: Kod 403..." veya benzeri bir log düşerse, bu durum ya Service Account yetkilerinden ya da hedeflenen Topic'e kayıtlı cihaz bulunmamasından kaynaklıdır. Firebase Console üzerinden test mesajı atarak bağlantıyı doğrulayabilirsiniz.
Kullanım İpuçları ve Özel Taktikler
Sistemin tüm gizli yeteneklerinden faydalanmak, gönderimleri optimize etmek ve ileri düzey senaryoları hayata geçirmek için aşağıdaki teknik ipuçlarını uygulayabilirsiniz.
2.1. Hücreleri Boş Bırakma Esnekliği (Hariç Tutmalar)
Sistem tamamen esnektir. Herhangi bir kısıtlama yapmak istemiyorsanız ilgili hücreyi boş bırakın.
premium_users yazarsanız, sadece onları gönderimden dışlar.iOS yazarsanız bildirim paketi iOS'ları atlar, sadece Android cihazlara gider.2.2. Kişiselleştirilmiş Bildirim ("Merhaba Ahmet") Taktiği
Panelden binlerce kişiye aynı anda gönderim yaparken her kullanıcıya kendi adıyla hitap edebilirsiniz:
Başlık veya Mesaj hücresine [ISIM] etiketini yazın.
(Örn: "Merhaba [ISIM], bu fırsatı kaçırma!")
Mobil uygulama, Firebase'den gelen bildirimi ekrana basmadan hemen önce intercept eder. Metindeki [ISIM] etiketini, uygulamaya giriş yapmış kullanıcının adıyla değiştirip ekrana basar.
Bu işlem tamamen Client-Side'da (mobil uygulamada) yapılır, E-Tablo tarafında ek bir koda ihtiyaç yoktur.
2.3. Aralık (J) ve Grup (K) Sütunu Mantığı (0'dan Sayma Kuralı)
Bilgisayarlar saymaya 1'den değil, 0'dan başlar. Bu yüzden rotasyon döngülerini kurarken aşağıdaki mantığı uygulayın:
1, Grup 0 yazılır.2 yapılır. Birinci grup için Grup 0, ikinci grup için Grup 1 verilir.Yolda Karşılaşılabilecek Sorunlar ve Çözümleri
Sistem çalışmadığında veya hata verdiğinde panik yapmayın. İşte en sık karşılaşılan 4 tipik durum ve bunların nokta atışı kesin çözümleri.
Sebep: E-Tablo saat veya gün formatını okuyamamıştır veya sunucu saati yanlıştır.
Çözüm:
- Saat sütununu (B) tamamen seçip üst menüden Biçim > Sayı > Saat yapın.
- Sürekli sayfasındaki Gün sütununu (A) seçip Biçim > Sayı > Düz Metin yapın. Kelimenin sonunda boşluk (Örn: "Pazartesi ") kalmadığından emin olun.
- Apps Script ekranında sol menüden Proje Ayarları (Dişli Çark) kısmına girip Saat Dilimi'nin (GMT+03:00) İstanbul olduğundan emin olun.
Sebep: Google Cloud veya Firebase yetki sorunu.
Çözüm: Firebase Service Account (JSON) e-posta adresinizin (client_email) ve Private Key'inizin kodun en üstüne tam ve eksiksiz kopyalandığından emin olun. Ayrıca projenizde Cloud Messaging API'nin (V1) aktif olup olmadığını Google Cloud Console'dan kontrol edin.
Sebep: Hatalı paket formatı. Genellikle "Platform Hariç" veya "Hariç Topic" kısımlarına olmaması gereken karakterler yazıldığında veya sütunlar kaydığında (Örn: Resim linkinin yanlışlıkla Hedef sütununa yazılması) Firebase paketi reddeder.
Çözüm: Satırdaki verileri silin ve sütun başlıklarına uygun şekilde (URL yerine URL, kelime yerine kelime) tekrar doldurun.
Sebep: iOS (Apple) işletim sisteminin güvenlik kısıtlamaları. Biz koddan iOS uyanma komutunu (mutable-content: 1) göndersek bile uygulama tarafında eksiklik vardır.
Çözüm: Bu bir kod veya tablo hatası değildir. Mobil yazılımcının iOS (Xcode) projesine "Notification Service Extension" kurması ve gelen resim URL'sini arka planda indirip bildirime ekleyecek (attach edecek) Swift/Objective-C kodlarını yazması gerekmektedir. Aksi halde Apple resmi yutacak ve sadece yazıyı gösterecektir.