Bir başvuru formu, etkinlik kaydı ya da sipariş formu açtın. Yanıtlar geliyor ve her birine "Formunuz bize ulaştı, teşekkürler" diye tek tek yazıyorsun. Bu rehberde bu işi Google'ın kendi aracı Apps Script ile otomatiğe bağlayacağız: biri formu gönderdiği anda ona senin hesabından kısa bir teşekkür e-postası gidecek. Ek uygulama, ücretli eklenti ya da sunucu gerekmiyor. Kod formun içinde duruyor.
İhtiyacın olan: bir Google Formu, o formu düzenleme yetkisi olan bir Google hesabı ve on dakika.
1. Formda e-posta toplamayı aç
Betik e-postayı kime göndereceğini formdan öğrenir. Bunun için formun yanıtlayanın adresini toplaması gerekir:
- Formu Google Forms'ta aç.
- Üstte Settings'e tıkla.
- Responses bölümünü aç.
- Collect email addresses altında birini seç:
- Verified: yanıtlayan Google hesabıyla oturum açar, adres doğrulanmış gelir.
- Responder input: yanıtlayan adresini kendisi yazar. Adresini yanlış yazarsa teşekkür e-postası ona ulaşmaz.
Kod tarafında adres getRespondentEmail() ile okunur. Google'ın belgesine göre bu işlev adresi yalnız e-posta toplama ayarı açıkken verir. Ayar kapalıysa aşağıdaki kod hiçbir şey göndermeden durur.
Not: Forms'un kendi Send responders a copy of their response seçeneği yanıtın bir kopyasını gönderir (When requested ya da Always). Bu rehberdeki yöntem ise metnini senin yazdığın ayrı bir e-posta gönderir.
2. Apps Script'i formun içinden aç
Formu aç ve More (⋮) menüsünden Apps Script'i seç. Yeni sekmede, bu forma bağlı bir betik projesi açılır. Bağlı betikler formu kimlik numarası yazmadan FormApp.getActiveForm() ile tanır. Bu betiği yalnız formu düzenleme yetkisi olan kişiler çalıştırabilir.
Projeye tanıyacağın bir ad ver (ör. "Form teşekkür"); daha sonra izinler listesinde betiği bu adla bulursun.
3. Kodu yapıştır
Düzenleyicideki örnek kodu tamamen sil ve şunu yapıştır:
function tesekkurEt(e) {
const kime = e.response
.getRespondentEmail();
if (!kime) return;
MailApp.sendEmail(kime,
'Yanıtın bize ulaştı',
'Formu doldurduğun için ' +
'teşekkürler. En kısa ' +
'sürede dönüş yapacağız.');
}
function kur() {
ScriptApp.newTrigger('tesekkurEt')
.forForm(FormApp.getActiveForm())
.onFormSubmit()
.create();
}
Ne yapıyor:
- tesekkurEt(e): Form gönderildiğinde çalışır.
eolay nesnesidir; Google'ın belgesine göre Forms'ta içinderesponse(gönderilen yanıt),source(form),authModevetriggerUidbulunur. Yanıttan adresi alır, adres yoksa durur, varsaMailApp.sendEmail(alıcı, konu, gövde)ile e-postayı yollar. - kur(): Form gönderim tetikleyicisini kodla kurar. Bu, Google'ın
FormTriggerBuilderbelgesindekiScriptApp.newTrigger(...).forForm(form).onFormSubmit().create()kalıbının aynısıdır.
Konu ve gövde metnini istediğin gibi değiştir; tırnakların kapalı kaldığına dikkat et.
İsteğe bağlı: e-postaya kişinin adını ekle
Formunda "Adınız" başlıklı bir kısa yanıt sorusu varsa, tesekkurEt işlevini şöyle genişletebilirsin:
function tesekkurEt(e) {
const kime = e.response.getRespondentEmail();
if (!kime) return;
let ad = '';
e.response.getItemResponses().forEach(function (r) {
if (r.getItem().getTitle() === 'Adınız') ad = r.getResponse();
});
MailApp.sendEmail(
kime,
'Yanıtın bize ulaştı',
'Merhaba ' + ad + ', formu doldurduğun için teşekkürler.'
);
}
Soru başlığı formdakiyle harfi harfine aynı olmalı ('Adınız' ile 'Adınız:' farklıdır).
4. Kaydet, kur işlevini bir kez çalıştır
- Save'e bas.
- Çalıştırılacak işlev olarak kur'u seç ve Run'a bas.
- İzin penceresi açılır: Review permissions → hesabını seç (Choose an account) → Allow.
Google'ın belgesine göre Apps Script gereken izinleri kodu tarayarak bulur ve ilk çalıştırmada sorar. Kod sonradan yeni bir hizmet eklerse yeniden sorar. Kendi yazdığın, Google'ın incelemediği betiklerde "doğrulanmamış uygulama" (unverified) uyarısı görebilirsin. Kodu baştan sona okuduysan ve kendi hesabındaysan devam etmek senin kararın.
Neden MailApp? Google'ın belgesine göre MailApp'in tek işi e-posta göndermektir ve Gmail gelen kutuna erişemez; istediği izin yalnız e-posta gönderme izni (script.send_mail). GmailApp ise ileti dizilerine, iletilere ve etiketlere erişir ve tüm posta kutusu iznini (https://mail.google.com/) ister. Yalnız gönderim gerekiyorsa dar izin daha güvenlidir.
tesekkurEt'i Run ile çalıştırma. Google'ın belgesine göre olay nesnesini (e) işleve tetikleyici çalıştığında Apps Script verir; elle çalıştırırsan e boş kalır ve kod hata verir. Bu işlev yalnız form gönderilince çalışacak.
5. Tetikleyiciyi kontrol et
Düzenleyicide solda Triggers (saat simgesi) bölümünü aç. tesekkurEt için olay türü form gönderimi olan tek bir satır görmelisin. İki satır görüyorsan kur'u iki kez çalıştırmışsındır; her yanıtta iki e-posta gider, fazlasını kaldır.
Aynı tetikleyiciyi elle de kurabilirsin: Triggers → sağ altta Add Trigger → çalışacak işlev olarak tesekkurEt, olay olarak form gönderimini seç → Save. Kodla ya da elle, ikisinden yalnız birini yap.
6. Test et
- Formu yanıtlayan biri gibi kendin doldur ve gönder (e-posta toplama açık olmalı).
- Birkaç saniye sonra yazdığın adresin gelen kutusuna bak. Gelmediyse istenmeyen (spam) klasörüne de bak.
- Apps Script'te solda Executions'a tıkla: her gönderim için bir çalıştırma satırı görürsün. Add a filter > Status ile Failed ve Timed out olanları süzebilirsin.
- Tetikleyici hata verirse Google sana "Summary of failures for Apps Script" konulu bir bildirim e-postası da gönderir. E-postada tetikleyiciyi kapatma ya da yeniden ayarlama bağlantısı da bulunur.
Sık hatalar
- E-posta hiç gitmiyor: Formda e-posta toplama kapalı. 1. adıma dön.
- İki kez gidiyor:
kuriki kez çalışmış, Triggers'ta iki satır var. - Gönderen adres beklediğin değil: Tetikleyici onu kuran hesapla çalışır; e-posta o hesaptan çıkar. Ekip formunda kimin kurduğunu not et.
- Gün içinde bir anda duruyor: Günlük kotayı doldurmuş olabilirsin. Google'ın kota sayfasına göre e-posta alıcısı sınırı kişisel hesapta günde 100, Workspace'te 1.500; tetikleyicilerin toplam çalışma süresi de kişisel hesapta günde 90 dakika, Workspace'te 6 saat. Kalan alıcı hakkını
MailApp.getRemainingDailyQuota()ile görebilirsin. Kotalar haber verilmeden değişebilir. - Yanlış kişiye ad gidiyor: İsteğe bağlı kodda soru başlığı formdakiyle aynı değil.
Gizlilik notu
Bu betik yanıtlayanın e-posta adresini kullanır. Formun açıklamasına adresin ne için toplandığını ve teşekkür e-postası gideceğini yaz. E-postanın gövdesine formdaki hassas yanıtları (telefon, kimlik bilgisi, sağlık bilgisi) koyma. Betiğin izinlerini kaldırmak istersen: Google Hesabı → Security → üçüncü taraf bağlantıları altında See all connections → betiğin adı → bağlantıları sil.
Takılırsan @jarvisasistan'a DM at ya da WhatsApp'tan yaz; hangi adımda kaldığını söyle, birlikte bakalım.
Sık sorulan sorular
Bunun için ücretli bir eklenti ya da Workspace hesabı gerekir mi?
Hayır. Apps Script kişisel Google hesabında da çalışır. Fark kotada: Google'ın kota sayfasına göre kişisel hesapta (gmail.com) günde 100 alıcıya, Google Workspace hesabında 1.500 alıcıya e-posta gönderebilirsin. Google kotaların haber verilmeden değişebileceğini de yazıyor.
E-posta kimin adına gidiyor?
Tetikleyiciyi kuran kişinin. Google'ın belgesine göre kurulabilir tetikleyiciler her zaman onu oluşturan hesabın yetkisiyle çalışır. Yani kur işlevini hangi hesapla çalıştırdıysan teşekkür e-postası o adresten çıkar.
Formu dolduranın e-postası gelmiyor, betik hiçbir şey göndermiyor. Neden?
Büyük olasılıkla formda e-posta toplama kapalı. getRespondentEmail() yalnız bu ayar açıkken adres verir. Formda Settings > Responses > Collect email addresses altından Verified ya da Responder input seç; koddaki "if (!kime) return;" satırı adres yoksa sessizce durur.
Bu konuda bir projeniz mi var?
Bize anlatın