Takip et

Google Araçlarıyla Müşteri Teklif Otomasyonu: Adım Adım Rehber

Her işletmenin karşılaştığı ortak bir zorluk olan manuel teklif hazırlama süreci, işletmeler için ciddi bir zaman kaybı, hata riski ve operasyonel verimsizlik anlamına gelebilir. Müşterilere özel teklifler oluşturmak, rekabetçi iş dünyasında hayati öneme sahipken, bu süreci verimli yönetmek çoğu zaman göz ardı edilir. Peki, bu süreci Google’ın ücretsiz ve güçlü araçları olan Forms, Sheets ve Apps Script ile nasıl otomatikleştirerek hem zamandan tasarruf edebilir hem de profesyonel bir imaj çizebilirsiniz? İşte tam da bu noktada, iş akışlarınızı kökten değiştirecek, hatasız ve hızlı bir çözüm sunan müşteri teklif otomasyonu devreye giriyor. Bu rehber, size adım adım kendi otomatik teklif sisteminizi kurmanın yollarını gösterecek ve işinizi bir üst seviyeye taşımanıza yardımcı olacaktır.

Günümüzde dijital dönüşümün hızı, işletmelerin operasyonel süreçlerini sürekli gözden geçirmesini ve optimize etmesini zorunlu kılıyor. Müşteriye özel bir teklif oluşturmak, genellikle birçok manuel adımı içeren karmaşık bir süreçtir: müşteri bilgilerini toplama, hizmet veya ürün seçeneklerini belirleme, fiyatlandırma hesaplamaları yapma, teklif metnini kişiselleştirme ve son olarak belgeyi düzenleyip gönderme. Bu adımların her biri, zaman alıcı olmasının yanı sıra insan kaynaklı hatalara da açık bir yapıya sahiptir. Özellikle küçük ve orta ölçekli işletmeler için sınırlı kaynaklarla bu yoğunluğu yönetmek, büyüme potansiyellerini kısıtlayabilir. Bu rehber boyunca, Google’ın bulut tabanlı araçlarının entegre gücünü kullanarak bu zorlukların üstesinden nasıl gelebileceğinizi, baştan sona işlevsel bir sistem kurarak göstereceğiz. Amacımız, sadece teknik bilgiyi aktarmak değil, aynı zamanda bu otomasyonun iş süreçlerinize katacağı değeri ve somut faydalarını da gözler önüne sermektir. Bu sayede, daha az manuel çaba ile daha fazla iş yapabilir, müşteri ilişkilerinizi güçlendirebilir ve en önemlisi, ekibinizin değerli zamanını daha stratejik görevlere ayırmasına olanak tanıyabilirsiniz.

Teklif Otomasyonu Neden Gerekli? Temel Faydaları Nelerdir?

Teklif otomasyonu, modern iş dünyasında sadece bir kolaylık değil, aynı zamanda rekabet avantajı sağlayan stratejik bir gerekliliktir. Manuel süreçlerin getirdiği yükten kurtularak, işletmeler daha hızlı, daha doğru ve daha profesyonel teklifler sunabilirler. Peki, bu otomasyonun temel faydaları nelerdir ve süreçlerinizde nasıl bir dönüşüm yaratabilir?

  • Zaman Tasarrufu: En belirgin faydalardan biri, teklif hazırlamak için harcanan zamanın dramatik bir şekilde azalmasıdır. Elle veri girişi, metin düzenleme ve dosya oluşturma gibi tekrarlayan görevler otomatikleştiğinde, ekibiniz daha değerli, stratejik işlere odaklanabilir. Bu sayede, bir teklifi saatler yerine dakikalar içinde hazırlamak mümkün hale gelir.
  • Hata Azaltma: Manuel işlemlerde yazım hataları, yanlış fiyatlandırma veya eksik bilgiler gibi hatalar kaçınılmazdır. Otomatik sistemler, veriyi tek bir kaynaktan çekip tutarlı bir şekilde işleyerek bu tür hataların önüne geçer. Bu, hem işletmenizin güvenilirliğini artırır hem de potansiyel müşteri kaybını engeller.
  • Profesyonel ve Tutarlı Marka İmajı: Otomatik teklif sistemleri, her zaman markanızın standartlarına uygun, tutarlı ve profesyonel görünümlü belgeler oluşturur. Şablon tabanlı bir yaklaşım, tüm tekliflerin aynı kurumsal kimliği yansıtmasını sağlar, bu da müşterilerinizin gözünde itibarınızı yükseltir.
  • Ölçeklenebilirlik: İşiniz büyüdükçe teklif talepleri de artar. Otomatik bir sistem, artan talebi mevcut insan gücüyle kolayca karşılayabilir. Daha fazla müşteriye, daha hızlı bir şekilde hizmet verme kapasitenizi artırır, böylece büyümenin önündeki engelleri kaldırır.
  • Veri Analizi ve Öngörüler: Tüm teklif verilerinin Google Sheets’te merkezi bir şekilde toplanması, satış trendlerini, müşteri tercihlerini ve teklif başarı oranlarını analiz etme fırsatı sunar. Bu veriler, gelecekteki stratejilerinizi belirlemek ve iş kararlarınızı desteklemek için paha biçilmez öngörüler sağlar. Hangi hizmetlerin daha çok talep gördüğünü, hangi fiyatlandırma stratejilerinin daha başarılı olduğunu görmek, işinizi daha akıllıca yönetmenize yardımcı olur.

Bu otomasyonun temel yapı taşları olan Google Forms, Google Sheets ve Google Apps Script’i kısaca tanıyalım:

  • Google Forms: Kullanıcı dostu arayüzü sayesinde hızla anketler, formlar ve bilgi toplama araçları oluşturmanızı sağlar. Müşteriden teklif için gerekli tüm bilgileri yapılandırılmış bir şekilde toplamanın en kolay yoludur.
  • Google Sheets: Güçlü bir e-tablo programıdır ve Forms yanıtlarını otomatik olarak depolamak için idealdir. Aynı zamanda teklif şablonunuzdaki dinamik verileri tutmak, fiyatlandırma hesaplamaları yapmak ve hatta basit bir CRM olarak görev görmek için kullanılabilir. Esnekliği sayesinde, işinize özel veri setlerini kolayca yönetebilirsiniz.
  • Google Apps Script: Google Workspace uygulamalarını birbirine bağlamak ve otomatikleştirmek için kullanılan JavaScript tabanlı bir geliştirme platformudur. Forms’tan gelen veriyi Sheets’te işlemek, Google Docs’ta dinamik teklif belgeleri oluşturmak, PDF’e dönüştürmek ve e-posta ile göndermek gibi tüm sihirli işlemler Apps Script ile gerçekleşir. Kod yazma bilgisi gerektirse de, temel seviyede bile büyük fark yaratır.

Bu üç aracın entegrasyonuyla, müşteri taleplerinden nihai teklif dokümanına kadar tüm süreci otomatikleştiren güçlü bir sistem kurabilirsiniz. Bu, sadece operasyonel bir iyileştirme değil, aynı zamanda müşteri deneyimini geliştiren ve işinizi büyüten stratejik bir yatırımdır.

Adım 1: İhtiyaç Analizi ve Form Tasarımı – Müşteriden Hangi Bilgileri Almalıyız?

Otomasyon sürecinin ilk ve en kritik adımı, teklif oluşturmak için hangi bilgilere ihtiyacınız olduğunu belirlemektir. Bu adım, sisteminizin temelini oluşturacak ve ilerleyen aşamalarda ne kadar esnek veya kapsamlı olacağını belirleyecektir. Öncelikle, her teklifte olması gereken standart bilgileri ve müşteriden alınması gereken değişken verileri listelemelisiniz.

İhtiyaç Analizi:

Teklifinizde yer alacak temel unsurları düşünün. Genellikle bunlar şunları içerir:

  • Müşteri Bilgileri: Müşteri adı, şirket adı, e-posta adresi, telefon numarası, adresi (gerekirse).
  • Proje/Hizmet Detayları: Proje adı, proje kapsamı, istenen hizmetler (liste şeklinde), özel istekler/notlar.
  • Fiyatlandırma Bilgileri: Seçilen hizmetlerin birim fiyatları, miktar, indirimler, toplam tutar, ödeme koşulları.
  • Teslimat Bilgileri: Tahmini başlangıç tarihi, bitiş tarihi, teslim süreleri.
  • İletişim/Teklif Eden Bilgileri: Teklifi veren kişinin adı, unvanı, iletişim bilgileri.

Bu bilgileri belirledikten sonra, bu verileri müşteriden nasıl alacağınızı düşünmelisiniz. Google Forms, bu veri toplama sürecini basitleştirmek için mükemmel bir araçtır.

Google Forms ile Form Tasarımı:

Şimdi Google Forms’a geçelim ve bu bilgileri toplayacak bir form oluşturalım:

  1. Yeni Bir Form Oluşturun: Google Forms adresine gidin ve ‘Boş’ bir form başlatın. Formunuza “Müşteri Teklif Talep Formu” gibi açıklayıcı bir başlık verin.
  2. Temel Müşteri Bilgileri:
    • “Müşteri Adı Soyadı” (Kısa yanıt) – Gerekli
    • “Şirket Adı” (Kısa yanıt) – Gerekli
    • “E-posta Adresi” (Kısa yanıt, veri doğrulama ile e-posta formatı kontrolü) – Gerekli
    • “Telefon Numarası” (Kısa yanıt)
  3. Proje Detayları:
    • “Proje Başlığı/Tanımı” (Kısa yanıt veya Paragraf) – Gerekli
    • “İhtiyaç Duyulan Hizmetler” (Çoktan seçmeli onay kutuları): Buraya sunmuş olduğunuz hizmetleri listeleyin (örn. Web Tasarımı, SEO Optimizasyonu, Sosyal Medya Yönetimi, İçerik Üretimi). Müşteri birden fazla seçim yapabilir. Bu kısım, teklifinizin dinamik olarak şekillenmesi için anahtar noktalardan biridir.
    • “Özel İstekler/Notlar” (Paragraf) – Müşterinin ek detaylar veya özel gereksinimleri belirtmesi için.
  4. Fiyatlandırma İlişkili Sorular (isteğe bağlı):

    Eğer fiyatlandırmanız kısmen müşteri seçimine bağlıysa, Forms içinde bunu yönetebilirsiniz. Ancak genellikle fiyatlandırma mantığı Apps Script veya Sheets’te daha iyi ele alınır. Yine de, bütçe aralığı gibi bir soru eklemek faydalı olabilir:

    • “Beklenen Bütçe Aralığı” (Çoktan seçmeli): Örneğin, “1000-3000 TL”, “3000-7000 TL”, “7000+ TL”. Bu, size proje büyüklüğü hakkında bir fikir verir.
  5. Form Ayarları ve Yanıtlar:
    • Form ayarlarından e-posta adreslerinin toplanmasını etkinleştirebilirsiniz.
    • En önemlisi, yanıtların otomatik olarak bir Google Sheets belgesine kaydedilmesini sağlayın. Bunu form düzenleyicisinde “Yanıtlar” sekmesine gidip, yeşil Sheets simgesine tıklayarak yapabilirsiniz. Yeni bir e-tablo oluşturmayı seçin ve ona “Müşteri Teklif Yanıtları” gibi açıklayıcı bir isim verin. Bu e-tablo, otomasyon sisteminizin veri tabanı olacaktır.

Uzman İpucu: Formunuzu sadece müşteri odaklı değil, aynı zamanda kendi iç süreçlerinizi kolaylaştıracak şekilde tasarlayın. Örneğin, eğer farklı hizmetler farklı ekipler tarafından yürütülüyorsa, “İhtiyaç Duyulan Hizmetler” bölümündeki seçenekleri bu ekiplerin görev tanımlarıyla uyumlu hale getirebilirsiniz. Ayrıca, formun sonuna bir “Formu Gönderen Kişinin Adı” alanı ekleyerek, birden fazla ekip üyesinin aynı formu doldurabildiği senaryolarda takip kolaylığı sağlayabilirsiniz.

Formunuzu oluşturduktan sonra, kendiniz doldurarak veya birkaç arkadaşınızdan test etmesini isteyerek her şeyin beklendiği gibi çalıştığından emin olun. Form yanıtlarının Sheets belgenize doğru bir şekilde aktarıldığını kontrol edin. Bu adım, tüm otomasyonunuzun sorunsuz çalışmasının temelini oluşturur. Detaylı ve düşünülmüş bir form tasarımı, daha sonraki kodlama ve belge oluşturma süreçlerini büyük ölçüde basitleştirecektir.

Adım 2: Google Sheets ile Veri Toplama ve Şablon Oluşturma – Teklifler Nasıl Depolanır ve Şekillendirilir?

Google Forms’u kullanarak müşteri bilgilerini ve proje detaylarını başarıyla topladınız. Şimdi sıra bu verileri düzenli bir şekilde depolamak ve teklif belgelerinizin dinamik yapısını oluşturmak için Google Sheets’i kullanmaya geldi. Sheets, sadece bir veri depolama aracı olmanın ötesinde, aynı zamanda karmaşık hesaplamalar yapabileceğiniz ve teklif şablonlarınız için temel bir veri kaynağı oluşturabileceğiniz güçlü bir platformdur.

Form Yanıtlarını Google Sheets’e Bağlama:

Formunuzu oluştururken, “Yanıtlar” sekmesinden otomatik olarak bir Google Sheets belgesi oluşturmayı seçmiştiniz. Bu e-tablo, formunuza her yeni yanıt geldiğinde otomatik olarak güncellenecektir. Her form gönderimi, Sheets’te yeni bir satır olarak kaydedilecek ve her sütun, formunuzdaki bir soruya karşılık gelecektir. Bu, verilerinizin düzenli ve erişilebilir olmasını sağlar.

Teklif Şablonu İçin Veri Yapısı Oluşturma:

Apps Script, teklifinizi oluştururken bu e-tablodaki verileri kullanacaktır. Bu nedenle, verilerinizi Apps Script’in kolayca erişebileceği ve işleyebileceği bir formatta tutmak önemlidir. Sheets belgenizde aşağıdaki gibi bir yapı düşünebilirsiniz:

  1. “Form Yanıtları 1” Sayfası: Bu sayfa, Forms’tan gelen ham verileri içerir. Bu sayfaya dokunmayın ve manuel değişiklikler yapmaktan kaçının, çünkü bu, otomasyonun tutarlılığını bozabilir.
  2. “Teklif Verileri” Sayfası (Opsiyonel ama Önerilen): Eğer Forms’tan gelen verileri işlemek (örn. hizmet listesini ayrıştırmak, fiyat hesaplamak) veya ek manuel bilgiler eklemek isterseniz, bu sayfayı kullanabilirsiniz. “Form Yanıtları 1” sayfasındaki ilgili verileri IMPORTRANGE veya basit TRANSPOSE fonksiyonlarıyla buraya çekebilir ve üzerine manuel notlar veya hesaplamalar ekleyebilirsiniz.
  3. “Hizmetler ve Fiyatlar” Sayfası: Bu sayfa, sunmuş olduğunuz tüm hizmetlerin bir listesini ve ilgili birim fiyatlarını içermelidir. Bu, teklifinizi oluştururken fiyatlandırmayı dinamik hale getirmenize olanak tanır.
    Hizmet Adı Birim Fiyat (TL) Açıklama
    Web Tasarımı 5000 Özel web sitesi tasarımı ve geliştirme
    SEO Optimizasyonu 1500 Aylık SEO hizmetleri
    Sosyal Medya Yönetimi 1000 Aylık sosyal medya hesap yönetimi

    Bu tablo yapısı, Apps Script’in seçilen hizmetlere göre fiyatları otomatik olarak çekmesini sağlayacaktır. Örneğin, müşteri “Web Tasarımı” ve “SEO Optimizasyonu” seçtiyse, script bu tablodan ilgili fiyatları bulup teklife ekleyebilir.

Teklif Şablonu Oluşturma (Google Docs):

Şimdi sıra, Apps Script’in dolduracağı dinamik teklif belgesini hazırlamaya geldi. Bunun için Google Docs’u kullanacağız.

  1. Yeni Bir Google Docs Belgesi Oluşturun: Google Docs‘a gidin ve ‘Boş’ bir belge başlatın. Belgenizi “Teklif Şablonu” olarak kaydedin.
  2. Şablonu Tasarlayın: Bu belge, müşterilerinize göndereceğiniz nihai teklifin görsel tasarımını ve standart metinlerini içerecektir. Logo, şirket bilgileri, genel bir giriş metni, hizmet açıklamaları ve kapanış gibi bölümleri ekleyin.
  3. Yer Tutucular Ekleyin: Apps Script’in otomatik olarak dolduracağı alanlar için özel yer tutucular kullanın. Bu yer tutucular, genellikle çift süslü parantez içinde {{MUSTERI_ADI}}, {{PROJE_BASLIGI}}, {{SECILEN_HIZMETLER}}, {{TOPLAM_FIYAT}} gibi görünür.

    Örnek Teklif Şablonu Yapısı:

    
    Sayın {{MUSTERI_ADI}},
    
    {{SIRKET_ADI}} olarak, {{PROJE_BASLIGI}} başlıklı projeniz için hazırladığımız teklifi sunmaktan memnuniyet duyarız.
    
    Proje Kapsamı:
    {{PROJE_ACIKLAMASI}}
    
    Seçilen Hizmetler:
    {{SECILEN_HIZMETLER_LISTESI}}
    
    Teklif Detayları:
    Toplam Fiyat: {{TOPLAM_FIYAT}} TL
    Tahmini Teslim Süresi: {{TESLIM_SURESI}}
    
    Saygılarımızla,
    {{TEKLIF_VEREN_KISI}}
    {{TEKLIF_VEREN_UNVANI}}
          

    Bu yer tutucuların, Sheets'teki sütun başlıklarınızla veya Apps Script'te tanımlayacağınız değişken adlarıyla tutarlı olması önemlidir. Örneğin, formda "Müşteri Adı Soyadı" sütunu varsa, şablonda {{MUSTERI_ADI}} kullanabilirsiniz.

  4. Teklif Listesi İçin Yer Tutucu: Özellikle "Seçilen Hizmetler" gibi dinamik listeler için, Docs şablonunuzda bir yer tutucuya ihtiyacınız olacak. Apps Script, bu yer tutucuyu Sheets'ten aldığı verilere göre bir maddeleme listesine veya tabloya dönüştürecektir. Bu adım, teklifinizin dinamikliğini artıracak ve her müşteriye özel bir içerik sunmasını sağlayacaktır.

Uzman İpucu: Teklif şablonunuzda sadece metin yer tutucuları değil, aynı zamanda görsel yer tutucuları da kullanabilirsiniz. Örneğin, müşterinin projesine özel bir resim veya grafik eklemek isterseniz, şablonda bir görsel için boş bir alan bırakıp, Apps Script ile bu alanı dinamik olarak doldurabilirsiniz. Ancak bu daha ileri düzey bir uygulama olacaktır. Başlangıç için sadece metin yer tutucularına odaklanmak yeterlidir.

Bu aşamayı tamamladığınızda, elinizde müşteri verilerini depolayan bir Google Sheet ve bu verilere göre kişiselleştirilebilecek bir Google Docs teklif şablonu olacak. Bir sonraki adımda, bu iki aracı Apps Script ile birbirine bağlayarak sihrin nasıl gerçekleştiğini göreceğiz.

Adım 3: Apps Script ile Otomasyonun Kalbi – Sihri Gerçekleştiren Kod Nasıl Yazılır?

Google Forms'tan veri topladınız ve Google Docs'ta bir teklif şablonu hazırladınız. Şimdi sıra, bu iki parçayı bir araya getirip otomatik teklif oluşturma sürecini başlatan Apps Script kodunu yazmaya geldi. Apps Script, Google Workspace uygulamalarını birbirine bağlayan ve özelleştirilmiş işlevler oluşturmanıza olanak tanıyan güçlü bir platformdur. JavaScript tabanlı olması sayesinde, web geliştirme bilgisi olanlar için oldukça tanıdık gelecektir.

Apps Script Ortamına Giriş:

Apps Script projelerinizi genellikle Google Sheets veya Google Docs belgenizden başlatırsınız:

  1. Google Sheets belgenizi açın ("Müşteri Teklif Yanıtları" isimli Sheets belgesi).
  2. Üst menüden Uzantılar > Apps Script yolunu izleyin. Bu, yeni bir Apps Script projesi (genellikle "Betik Düzenleyici" olarak anılır) açacaktır.
  3. Karşınıza Code.gs adında varsayılan bir dosya ve içinde boş bir myFunction() olacaktır. Buraya kodlarımızı yazacağız.

Temel İş Akışı ve Trigger Kurulumu:

Otomasyonun ana mantığı şudur: Müşteri formu her gönderdiğinde, Apps Script otomatik olarak tetiklenir, form yanıtlarını alır, Google Docs şablonunu kopyalar, yer tutucuları bu yanıtlarla doldurur, belgeyi PDF'e dönüştürür ve müşteriye e-posta ile gönderir.

Bu akışı başlatmak için bir "trigger" (tetikleyici) ayarlamamız gerekecek. Trigger, belirli bir olaya (örneğin, bir formun gönderilmesi) yanıt olarak bir Apps Script fonksiyonunu çalıştırmak için kullanılır.

1. onFormSubmit Fonksiyonunu Oluşturma:

Bu fonksiyon, Google Form'unuzdan yeni bir yanıt geldiğinde çalışacak ana fonksiyondur. Apps Script'te, form gönderim olayını dinlemek için özel bir fonksiyon imzalıyoruz.


function onFormSubmit(e) {
  // Bu fonksiyon, Google Form'a yeni bir yanıt geldiğinde otomatik olarak tetiklenir.
  // 'e' nesnesi, form gönderimi ile ilgili tüm verileri içerir.

  // 1. Gelen Verileri Alma
  // Form yanıtları 'e.namedValues' veya 'e.values' içinde bulunur.
  // 'e.namedValues', sütun başlıklarını anahtar olarak kullanarak verilere erişimi kolaylaştırır.
  var response = e.namedValues;

  // Sheets'teki "Müşteri Adı Soyadı" sütununa karşılık gelen değeri alalım.
  // Not: Sütun başlıkları tam olarak Forms'taki soru başlıklarınızla eşleşmelidir.
  var musteriAdi = response["Müşteri Adı Soyadı"] ? response["Müşteri Adı Soyadı"][0] : "Bilinmiyor";
  var musteriEposta = response["E-posta Adresi"] ? response["E-posta Adresi"][0] : "bilinmiyor@example.com";
  var sirketAdi = response["Şirket Adı"] ? response["Şirket Adı"][0] : "Bilinmiyor";
  var projeBasligi = response["Proje Başlığı/Tanımı"] ? response["Proje Başlığı/Tanımı"][0] : "Belirtilmemiş Proje";
  
  // Çoktan seçmeli onay kutularından gelen hizmetler genellikle virgülle ayrılmış bir dizi olarak gelir.
  var secilenHizmetlerArray = response["İhtiyaç Duyulan Hizmetler"] ? response["İhtiyaç Duyulan Hizmetler"][0].split(", ") : [];

  // Güncel tarih
  var today = new Date();
  var tarih = Utilities.formatDate(today, Session.getScriptTimeZone(), "dd/MM/yyyy");

  // Loglama yaparak gelen veriyi kontrol edebiliriz (Hata ayıklama için önemlidir)
  Logger.log("Yeni form yanıtı alındı. Müşteri: " + musteriAdi + ", E-posta: " + musteriEposta);
  Logger.log("Seçilen Hizmetler: " + secilenHizmetlerArray.join(", "));

  // Diğer adımlar (Teklif oluşturma, PDF'e dönüştürme, E-posta gönderme) burada çağrılacak.
  // Örneğin: generateProposal(musteriAdi, musteriEposta, projeBasligi, secilenHizmetlerArray, tarih);
}
  

2. Trigger Kurulumu:

Apps Script düzenleyicisinde sol taraftaki menüden "Tetikleyiciler" (saat simgesi) seçeneğine tıklayın. Sağ alttaki "Tetikleyici ekle" butonuna basın ve aşağıdaki ayarları yapın:

  • Çalıştırılacak işlev seçin: onFormSubmit
  • Olay kaynağını seçin: E-tablodan (Çünkü form yanıtları bu e-tabloya bağlıdır)
  • Olay türünü seçin: Form gönderildiğinde
  • Kaydedin.

Bu trigger sayesinde, Google Form'unuz her gönderildiğinde onFormSubmit fonksiyonu otomatik olarak çalışacak ve e parametresi aracılığıyla gönderilen tüm verileri fonksiyona iletecektir.

Apps Script Yetkilendirmeleri:

Trigger'ı kaydettiğinizde veya script'i ilk kez çalıştırdığınızda, Google sizden Apps Script'in Google Drive, Docs, Sheets ve Gmail gibi hizmetlerinize erişimi için izin isteyecektir. Bu izinleri dikkatlice okuyun ve onaylayın. Script'in çalışabilmesi için bu izinler gereklidir.

Bu adımı tamamladığınızda, formunuzdan gelen verileri yakalayabilen temel bir Apps Script altyapınız olacak. Bir sonraki adımda, bu verileri kullanarak nasıl dinamik bir teklif belgesi oluşturacağımızı ve müşteriye e-posta ile göndereceğimizi detaylandıracağız.

Adım 4: Dinamik Teklif Belgesi Oluşturma ve E-posta Gönderme – Profesyonel Çıktı Nasıl Sağlanır?

Apps Script, onFormSubmit fonksiyonu aracılığıyla form verilerini yakaladı. Şimdi bu verileri kullanarak, Google Docs'ta hazırladığınız şablonu kişiselleştirilmiş bir teklife dönüştüreceğiz, PDF olarak kaydedeceğiz ve son olarak müşteriye e-posta ile göndereceğiz.

Dinamik Teklif Belgesi Oluşturma:

Bu süreçte Google Drive ve Google Docs servislerini kullanacağız. Apps Script'in sunduğu DriveApp ve DocumentApp sınıfları bu işlemleri yapmamıza olanak tanır.

  1. Şablonu Kopyalama: Orijinal şablon belgemizi doğrudan değiştirmek yerine, önce bir kopyasını oluşturacağız. Bu, her yeni teklif için temiz bir başlangıç yapmamızı sağlar.
  2. Yer Tutucuları Değiştirme: Kopyalanan belgenin içeriğini alıp, {{MUSTERI_ADI}} gibi yer tutucuları, formdan gelen gerçek verilerle değiştireceğiz.
  3. Dinamik Liste Oluşturma (Hizmetler): Eğer müşteriniz birden fazla hizmet seçtiyse, bu hizmetleri bir maddeleme listesi olarak teklife eklemek gerekir. Bunu, seçilen hizmetleri döngüye alarak ve her birini yeni bir satır olarak belgeye ekleyerek yapabiliriz.

E-posta ile Gönderme:

Belgeyi PDF formatında oluşturduktan sonra, Google'ın GmailApp veya MailApp hizmetlerini kullanarak teklifi müşterinin e-posta adresine göndereceğiz. MailApp daha basit e-postalar için yeterli olabilirken, GmailApp daha fazla kontrol (örn. taslak oluşturma, etiketleme) sağlar.

Şimdi onFormSubmit fonksiyonumuza bu adımları ekleyelim:


function onFormSubmit(e) {
  var response = e.namedValues;

  var musteriAdi = response["Müşteri Adı Soyadı"] ? response["Müşteri Adı Soyadı"][0] : "Değerli Müşteri";
  var musteriEposta = response["E-posta Adresi"] ? response["E-posta Adresi"][0] : "destek@sirketiniz.com";
  var sirketAdi = response["Şirket Adı"] ? response["Şirket Adı"][0] : "Belirtilmemiş Şirket";
  var projeBasligi = response["Proje Başlığı/Tanımı"] ? response["Proje Başlığı/Tanımı"][0] : "Proje Teklifi";
  var projeAciklamasi = response["Özel İstekler/Notlar"] ? response["Özel İstekler/Notlar"][0] : "Müşteri özel istek belirtmemiştir.";
  
  var secilenHizmetlerArray = response["İhtiyaç Duyulan Hizmetler"] ? response["İhtiyaç Duyulan Hizmetler"][0].split(", ") : [];

  var today = new Date();
  var tarih = Utilities.formatDate(today, Session.getScriptTimeZone(), "dd/MM/yyyy");

  // --- Sabitler (Kendi ID'leriniz ve Bilgilerinizle Değiştirin) ---
  var TEMPLATE_ID = "123abcDEF_Sizin_Doc_Sablon_IDniz"; // Google Docs teklif şablonunuzun ID'si
  var FOLDER_ID = "xyz123_Sizin_Teklif_Klasor_IDniz"; // Oluşturulan teklifleri kaydedeceğiniz Drive klasörünün ID'si
  var SERVICES_SHEET_NAME = "Hizmetler ve Fiyatlar"; // Sheets'teki hizmetlerin olduğu sayfa adı
  var TEKLIF_VEREN_KISI = "Ali Can";
  var TEKLIF_VEREN_UNVANI = "Satış Müdürü";
  var FIRMA_ADI = "Sizin Şirketiniz A.Ş.";
  var FIRMA_EPOSTA = "info@sirketiniz.com";
  // -----------------------------------------------------------------

  // Hizmetler ve Fiyatlar sayfasını al
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var servicesSheet = ss.getSheetByName(SERVICES_SHEET_NAME);
  var servicesData = servicesSheet.getDataRange().getValues(); // Tüm veriyi al

  var hizmetlerListesiText = "";
  var toplamFiyat = 0;

  // Başlıkları atla (ilk satır)
  for (var i = 1; i < servicesData.length; i++) {
    var serviceName = servicesData[i][0]; // Hizmet Adı
    var servicePrice = servicesData[i][1]; // Birim Fiyat

    if (secilenHizmetlerArray.includes(serviceName)) {
      hizmetlerListesiText += "- " + serviceName + " (" + servicePrice + " TL)\n";
      toplamFiyat += parseFloat(servicePrice); // Fiyatı toplam fiyata ekle
    }
  }

  // --- 1. Teklif Belgesini Oluşturma ---
  var templateFile = DriveApp.getFileById(TEMPLATE_ID);
  var folder = DriveApp.getFolderById(FOLDER_ID);
  var newFileName = musteriAdi + " - " + projeBasligi + " Teklifi - " + tarih;

  // Şablon dosyasını kopyala ve yeni adıyla klasöre kaydet
  var newFile = templateFile.makeCopy(newFileName, folder);
  var doc = DocumentApp.open(newFile);
  var body = doc.getBody();

  // Yer tutucuları değiştir
  body.replaceText("{{MUSTERI_ADI}}", musteriAdi);
  body.replaceText("{{SIRKET_ADI}}", sirketAdi);
  body.replaceText("{{PROJE_BASLIGI}}", projeBasligi);
  body.replaceText("{{PROJE_ACIKLAMASI}}", projeAciklamasi);
  body.replaceText("{{SECILEN_HIZMETLER_LISTESI}}", hizmetlerListesiText.trim()); // Trim boşlukları temizler
  body.replaceText("{{TOPLAM_FIYAT}}", toplamFiyat.toFixed(2)); // İki ondalık basamağa yuvarla
  body.replaceText("{{TESLIM_SURESI}}", "4-6 Hafta"); // Örnek olarak sabit bir değer
  body.replaceText("{{TEKLIF_VEREN_KISI}}", TEKLIF_VEREN_KISI);
  body.replaceText("{{TEKLIF_VEREN_UNVANI}}", TEKLIF_VEREN_UNVANI);
  body.replaceText("{{FIRMA_ADI}}", FIRMA_ADI);

  doc.saveAndClose(); // Değişiklikleri kaydet ve belgeyi kapat

  // --- 2. Belgeyi PDF'e Dönüştürme ve E-posta Gönderme ---
  var pdfBlob = newFile.getAs(MimeType.PDF);
  pdfBlob.setName(newFileName + ".pdf"); // PDF dosya adını belirle

  var emailSubject = FIRMA_ADI + " | Proje Teklifiniz: " + projeBasligi;
  var emailBody = "Merhaba " + musteriAdi + ",\n\n" +
                  FIRMA_ADI + " olarak, '" + projeBasligi + "' projeniz için hazırladığımız teklifi ekte bulabilirsiniz.\n\n" +
                  "Herhangi bir sorunuz olursa lütfen bizimle iletişime geçmekten çekinmeyin.\n\n" +
                  "Saygılarımızla,\n" +
                  TEKLIF_VEREN_KISI + "\n" +
                  FIRMA_ADI;

  MailApp.sendEmail({
    to: musteriEposta,
    subject: emailSubject,
    body: emailBody,
    name: FIRMA_ADI, // Gönderen adını belirler
    attachments: [pdfBlob] // PDF'i ek olarak gönder
  });

  Logger.log("Teklif '" + newFileName + "' oluşturuldu ve " + musteriEposta + " adresine gönderildi.");
}
  

Yukarıdaki kodu kendi Apps Script projenize kopyalayıp yapıştırın. TEMPLATE_ID ve FOLDER_ID değişkenlerini kendi Google Docs şablonunuzun ve Drive klasörünüzün ID'leri ile değiştirmelisiniz. Bu ID'leri, ilgili dosya veya klasörün URL'sinden kolayca bulabilirsiniz.

Gerçek Dünya Senaryosu: Freelancer Ajansta Teklif Otomasyonu

Küçük bir web tasarım ajansı düşünelim. Ajans, gelen her yeni proje talebi için manuel olarak teklif hazırlamak zorunda kalıyor. Bu süreç, haftada ortalama 5-7 saatlerini alıyor ve bazen aceleyle yapılan hatalar yüzünden müşteri ilişkilerinde sorunlar yaşanabiliyor. Ajans, bu rehberdeki adımları takip ederek bir otomasyon sistemi kurdu. Artık müşteriler, ajansın web sitesindeki bir Google Form'u dolduruyor. Form gönderildikten saniyeler sonra, müşteri seçtiği hizmetlere ve belirttiği detaylara göre kişiselleştirilmiş, PDF formatında bir teklifi e-posta kutusunda buluyor. Ajans sahipleri ise Drive klasörlerinde oluşturulan tüm tekliflerin düzenli bir kaydına sahip oluyor. Bu sayede, ayda 20-30 saatlik bir zaman tasarrufu sağlanırken, tekliflerin tutarlılığı ve profesyonelliği artırılmış, hata oranı sıfıra indirilmiştir. Bu zamanı yeni müşterilere odaklanarak veya mevcut projelere daha fazla değer katarak kullanabiliyorlar.

Uzman İpucu: Teklifinizi e-posta ile gönderirken, sadece PDF eklemek yerine e-posta gövdesini de dinamikleştirebilirsiniz. Örneğin, müşterinin adıyla başlayan samimi bir karşılama metni ve projenin kısa bir özeti e-postanın açılma oranını ve müşteri etkileşimini artırabilir. Ayrıca, Drive'da oluşturulan teklif dosyasının URL'sini de Sheets'teki ilgili satıra kaydederek daha sonra kolayca erişim sağlayabilirsiniz.

Bu adımları başarıyla tamamladığınızda, müşteri teklif talebinden, otomatik PDF teklifi oluşturup e-posta ile göndermeye kadar tüm süreci otomatikleştiren güçlü bir sistem kurmuş olacaksınız. Bu, işinizin verimliliğini ve profesyonelliğini önemli ölçüde artıracaktır.

İleri Düzey İpuçları ve Entegrasyonlar – Sistemimizi Nasıl Geliştirebiliriz?

Temel otomasyon sisteminizi kurduktan sonra, Google Forms, Sheets ve Apps Script kombinasyonunu kullanarak yeteneklerini daha da genişletebilir ve iş akışlarınızı daha da optimize edebilirsiniz. İşte sisteminizi bir üst seviyeye taşıyacak bazı ileri düzey ipuçları ve entegrasyon fikirleri:

  1. Basit bir CRM Entegrasyonu:

    Oluşturduğunuz "Müşteri Teklif Yanıtları" Sheets belgesini basit bir müşteri ilişkileri yönetimi (CRM) aracı olarak kullanabilirsiniz. onFormSubmit fonksiyonunda, her yeni teklif gönderildiğinde, Sheets'e teklif durumu (örneğin "Gönderildi"), gönderim tarihi, teklifin Drive URL'si gibi ek sütunlar ekleyebilir ve bu bilgileri otomatik olarak doldurabilirsiniz. Daha sonra bu tabloda manuel olarak "Kazanıldı", "Kaybedildi" gibi durumları güncelleyerek satış hattınızı takip edebilirsiniz.

    
      // Teklif verilerini Sheets'e kaydetme (onFormSubmit fonksiyonunun sonuna eklenebilir)
      var sheet = ss.getSheetByName("Form Yanıtları 1"); // Yanıtların geldiği sayfa
      var lastRow = sheet.getLastRow();
    
      // Yeni sütunlar ekleyin (Eğer Sheets'te bu sütunlar yoksa, manuel olarak eklemeniz gerekir)
      sheet.getRange(lastRow, sheet.getLastColumn() + 1).setValue(new Date()); // Gönderim Tarihi
      sheet.getRange(lastRow, sheet.getLastColumn() + 2).setValue("Gönderildi"); // Teklif Durumu
      sheet.getRange(lastRow, sheet.getLastColumn() + 3).setValue(newFile.getUrl()); // Teklif URL'si
          

  2. Daha Gelişmiş Fiyatlandırma Motorları:

    "Hizmetler ve Fiyatlar" sayfanızı daha karmaşık fiyatlandırma kuralları içerecek şekilde genişletebilirsiniz. Örneğin, müşteri belli bir hizmet paketi seçtiğinde otomatik indirimler uygulamak veya proje süresine göre fiyatlandırmayı ayarlamak. Apps Script, Sheets'teki bu karmaşık mantığı okuyup yorumlayarak teklife yansıtabilir.

  3. Birden Fazla Teklif Şablonu Yönetimi:

    Farklı hizmetleriniz veya müşteri segmentleriniz için birden fazla teklif şablonunuz olabilir. Formunuza "Teklif Tipi" gibi bir soru ekleyerek müşterinin veya satış temsilcisinin hangi şablonun kullanılacağını seçmesini sağlayabilirsiniz. Apps Script, formdaki bu seçime göre doğru TEMPLATE_ID'yi dinamik olarak belirleyebilir.

    
      // Örnek: Formdan gelen teklif tipine göre şablon seçimi
      var teklifTipi = response["Teklif Tipi"] ? response["Teklif Tipi"][0] : "Standart";
      var TEMPLATE_ID;
    
      if (teklifTipi === "Premium Paket") {
        TEMPLATE_ID = "premium_sablon_id";
      } else if (teklifTipi === "Gelişmiş Hizmetler") {
        TEMPLATE_ID = "gelismis_sablon_id";
      } else {
        TEMPLATE_ID = "standart_sablon_id";
      }
          

  4. Hata Yönetimi ve Bildirimler:

    Otomasyon sistemlerinde hata oluşması olasıdır (örn. eksik veri, Drive'a erişim sorunu). Script'inize hata yakalama blokları (try...catch) ekleyerek, bir hata meydana geldiğinde kendinize e-posta ile bildirim gönderebilirsiniz. Bu sayede, müşterileriniz etkilenmeden sorunları hızla giderebilirsiniz.

    
      try {
        // Tüm teklif oluşturma ve gönderme kodunuz buraya
      } catch (error) {
        Logger.log("Hata oluştu: " + error.toString());
        MailApp.sendEmail("admin@sirketiniz.com", "Apps Script Teklif Hatası", "Bir hata meydana geldi: " + error.toString());
      }
          

  5. Webhook ve Harici API Entegrasyonları:

    Apps Script, UrlFetchApp hizmeti sayesinde harici API'lere bağlanabilir. Bu, CRM sisteminizle (örneğin Salesforce, HubSpot) gerçek zamanlı entegrasyonlar kurmanıza veya ödeme ağ geçitleriyle iletişim kurmanıza olanak tanır. Örneğin, yeni teklif oluşturulduğunda CRM'inizde otomatik bir "fırsat" oluşturabilirsiniz.

  6. Görsel Geri Bildirim ve Durum Takibi:

    Sheets'te tekliflerin durumunu gösteren bir sayfa oluşturabilir ve bu sayfaya koşullu biçimlendirme uygulayarak "Gönderildi", "Onaylandı", "Reddedildi" gibi durumları farklı renklerle vurgulayabilirsiniz. Bu, bir bakışta genel satış performansınızı görmenizi sağlar.

Uzman İpucu: Apps Script ile oluşturulan HTML e-posta gövdeleri de mobil uyumlu hale getirilebilir. Inline CSS kullanarak veya responsive tasarım prensiplerini dikkate alarak, e-postalarınızın telefonlarda da düzgün görünmesini sağlayabilirsiniz. Örneğin, genişlikleri %100 olarak ayarlamak veya metin boyutlarını cihaz ekranına göre optimize etmek gibi basit adımlar büyük fark yaratır. Her ne kadar doğrudan CSS kodu veremeyecek olsam da, bu prensipleri Apps Script'in e-posta HTML içeriğinde uygulayabileceğinizi unutmayın.

Bu ileri düzey ipuçları, temel otomasyon sisteminizi daha güçlü, esnek ve işletmenizin özel ihtiyaçlarına göre uyarlanabilir hale getirmenize yardımcı olacaktır. Her bir entegrasyon veya geliştirme, manuel iş yükünüzü azaltırken, iş süreçlerinizin verimliliğini ve profesyonelliğini artıracaktır.

Sonuç: Verimlilik ve Profesyonellik İçin Otomasyonun Önemi

Müşteri tekliflerinin otomasyonu, çağımız iş dünyasında sadece bir lüks değil, aynı zamanda rekabetçi kalmak ve büyümek için stratejik bir zorunluluktur. Google Forms, Sheets ve Apps Script gibi erişilebilir ve güçlü araçları kullanarak, işletmeler manuel iş yükünü önemli ölçüde azaltabilir, hata oranlarını minimize edebilir ve müşterilerine daha hızlı, daha tutarlı ve daha profesyonel teklifler sunabilirler. Bu rehberde adım adım gösterildiği gibi, karmaşık görünen bir süreci bile parçalara ayırarak ve doğru araçları kullanarak kolayca otomatikleştirmek mümkündür.

Otomasyonun faydaları sadece zaman tasarrufu ve maliyet düşürmekle sınırlı değildir. Aynı zamanda, ekibinizin daha stratejik görevlere odaklanmasına olanak tanır, müşteri deneyimini iyileştirir ve değerli satış verileri sağlayarak daha bilinçli iş kararları almanıza yardımcı olur. İş akışlarınızı optimize ederek elde ettiğiniz bu verimlilik, şirketinizin ölçeklenebilirliğini artırır ve gelecekteki büyümeye zemin hazırlar. Unutmayın, dijital araçlar doğru kullanıldığında sadece işleri kolaylaştırmakla kalmaz, aynı zamanda iş yapış şekillerimizi de kökten dönüştürür.

Sıkça Sorulan Sorular (SSS)

  1. Apps Script'i kullanmak için kodlama bilgisine ihtiyacım var mı?

    Evet, temel JavaScript bilgisi Apps Script ile otomasyon kurmak için faydalıdır. Ancak, bu rehberdeki gibi adım adım örnekleri takip ederek ve küçük değişiklikler yaparak bile önemli otomasyonlar oluşturabilirsiniz. Google'ın geniş dokümantasyonu ve topluluk desteği de öğrenme sürecinde size yardımcı olacaktır.

  2. Bu sistem ne kadar güvenlidir? Müşteri verileri nasıl korunuyor?

    Google Forms ve Sheets, Google'ın sağlam güvenlik altyapısı üzerinde çalışır. Apps Script, yalnızca sizin tarafınızdan verilen izinler dahilinde çalışır. Hassas verilerle çalışırken, erişim izinlerini dikkatlice yönetmek ve script'inizi mümkün olduğunca kısıtlı yetkilerle çalıştırmak önemlidir. Tüm veriler Google'ın bulutunda şifrelenmiş olarak saklanır.

  3. Sistemi kurmak ne kadar sürer?

    Bu, ihtiyaçlarınızın karmaşıklığına ve kodlama deneyiminize bağlıdır. Basit bir teklif otomasyonu için Forms, Sheets ve Docs şablonlarını hazırlayıp temel Apps Script'i kurmak birkaç saat sürebilir. Daha gelişmiş entegrasyonlar ve özellikler eklemek elbette daha fazla zaman alacaktır.

  4. Apps Script ücretsiz mi? Belirli bir sınırı var mı?

    Evet, Apps Script çoğu kullanıcı için ücretsizdir. Ancak, Google servislerini kullanırken günlük belirli kotalar (örneğin, gönderilebilecek e-posta sayısı, yapılabilecek Drive çağrısı sayısı) bulunur. Çoğu küçük ve orta ölçekli işletme için bu kotalar yeterlidir. Kurumsal düzeyde yoğun kullanımlarda daha üst kotalara sahip Workspace lisansları gerekebilir.

  5. Oluşturulan teklifleri nasıl takip edebilirim?

    Google Sheets'teki form yanıtları sayfanızı bir takip tablosu olarak kullanabilirsiniz. Her teklif oluşturulduğunda, ilgili satıra teklifin Drive URL'sini, gönderim tarihini ve durumunu (örn. "Gönderildi") kaydeden Apps Script kodları ekleyebilirsiniz. Daha sonra bu tabloda tekliflerin durumunu manuel olarak güncelleyerek (örn. "Kabul Edildi", "Reddedildi") satış sürecinizi yönetebilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık