Basit tetikleyiciler gibi, yüklenebilir tetikleyiciler de Apps Script'in bir belgenin açılması gibi belirli bir etkinlik gerçekleştiğinde işlevi otomatik olarak çalıştırmasına olanak tanır. Ancak yüklenebilir tetikleyiciler, basit tetikleyicilerden daha fazla esneklik sunar: Yetkilendirme gerektiren hizmetleri çağırabilir, zamana dayalı (saat) tetikleyiciler de dahil olmak üzere çeşitli ek etkinlik türleri sunar ve programatik olarak kontrol edilebilir. Hem basit hem de yüklenebilir tetikleyiciler için Apps Script, tetiklenen işleve etkinliğin gerçekleştiği bağlamla ilgili bilgileri içeren bir etkinlik nesnesi iletir.
Kısıtlamalar
Yüklenebilir tetikleyiciler basit tetikleyicilere kıyasla daha fazla esneklik sunsa da yine de bazı kısıtlamalara tabidir:
- Dosya salt okuma (görüntüleme veya yorum yapma) modunda açılırsa bu makrolar çalışmaz. Bağımsız komut dosyalarında, tetikleyicilerin düzgün şekilde çalışabilmesi için kullanıcıların komut dosyası dosyasına en azından görüntüleme erişimi olması gerekir.
Komut dosyası yürütmeleri ve API istekleri, tetikleyicilerin çalışmasına neden olmaz. Örneğin, yeni bir form yanıtı göndermek için
FormResponse.submit()
işlevini çağırmak, formun gönderme tetikleyicisinin çalışmasına neden olmaz.Yüklenebilir tetikleyiciler her zaman onları oluşturan kullanıcının hesabı altında çalışır. Örneğin, yüklenebilecek bir açma tetikleyicisi oluşturursanız bu tetikleyici, iş arkadaşınız dokümanı açtığında (iş arkadaşınız düzenleme erişimine sahipse) çalışır ancak hesabınız olarak çalışır. Yani bir doküman açıldığında e-posta göndermek için bir tetikleyici oluşturursanız e-posta her zaman hesabınızdan gönderilir. E-posta, dokümanı açan hesaptan gönderilmeyebilir. Ancak her hesap için yüklenebilecek bir tetikleyici oluşturabilirsiniz. Bu durumda her hesaptan bir e-posta gönderilir.
Belirli bir hesap, ikinci hesaptan yüklenen tetikleyicileri göremez ancak ilk hesap bu tetikleyicileri etkinleştirebilir.
Yüklenebilir tetikleyiciler, Apps Komut Dosyası tetikleyici kota sınırlamalarına tabidir.
Zamana dayalı tetikleyiciler
Zamana dayalı tetikleyici (saat tetikleyicisi olarak da bilinir), Unix'teki cron işine benzer. Zamana dayalı tetikleyiciler, komut dosyalarının belirli bir zamanda veya tekrarlanan bir aralıkta (dakikada bir veya ayda bir gibi) yürütülmesine olanak tanır. (Eklentiler, zamana dayalı tetikleyiciyi en fazla saatte bir kullanabilir.) Saat biraz rastgele olabilir. Örneğin, 09:00'da tekrarlanan bir tetikleyici oluşturursanız Apps Script 09:00 ile 10:00 arasında bir saat seçer ve tetikleyicinin tekrar tetiklenmesi için 24 saat geçmesi gerektiğinden bu zamanlamayı her gün tutarlı tutar.
Etkinliğe dayalı tetikleyiciler
Yüklenebilir etkinlik odaklı tetikleyiciler, onOpen()
gibi basit tetikleyicilere kavramsal olarak benzerdir ancak ek etkinliklere yanıt verebilir ve farklı davranır.
Örneğin, Google E-Tablolar için yüklenilebilir açılış tetikleyicisi, basit onOpen()
tetikleyicisi gibi, e-tablo düzenleme erişimi olan herhangi bir kullanıcı tarafından açıldığında etkinleştirilir. Ancak yüklenebilir sürüm, yetkilendirme gerektiren hizmetleri çağırabilir. Yüklenebilir sürüm, e-tabloyu düzenleme erişimi olan başka bir kullanıcı açsa bile tetikleyiciyi oluşturan kullanıcının yetkisiyle çalışır.
Google Workspace uygulamaları için yüklenebilecek çeşitli tetikleyiciler vardır:
- Yüklenebilir bir açma tetikleyicisi, kullanıcı düzenleme izni olan bir e-tabloyu, dokümanı veya formu açtığında çalışır.
- Kullanıcı bir e-tablodaki değeri değiştirdiğinde yüklenebilir bir düzenleme tetikleyicisi çalışır.
- Yüklenebilir bir değişiklik tetikleyicisi, kullanıcı e-tablonun yapısını değiştirdiğinde (ör. yeni bir sayfa ekleyerek veya sütun kaldırarak) çalışır.
- Kullanıcı bir forma yanıt verdiğinde, yüklenebilecek bir form gönderme tetikleyicisi çalışır. Form gönderme tetikleyicisinin iki sürümü vardır: Google Formlar için ve form bir e-tabloya gönderiliyorsa E-Tablolar için.
- Yüklenebilir bir takvim etkinliği tetikleyicisi, kullanıcının takvim etkinlikleri güncellendiğinde (oluşturulduğunda, düzenlendiğinde veya silindiğinde) çalışır.
Yüklenebilir tetikleyicileri bağımsız ve bağlı komut dosyalarında kullanabilirsiniz. Örneğin, bağımsız bir komut dosyası, TriggerBuilder.forSpreadsheet(key)
işlevini çağırıp e-tablonun kimliğini ileterek rastgele bir Google E-Tablolar dosyası için programlı olarak yüklenebilecek bir tetikleyici oluşturabilir.
Tetikleyicileri manuel olarak yönetme
Komut dosyası düzenleyicide manuel olarak yüklenebilir bir tetikleyici oluşturmak için aşağıdaki adımları uygulayın:
- Apps Komut Dosyası projenizi açın.
- Sol tarafta Tetikleyiciler'i tıklayın.
- Sağ altta Tetikleyici Ekle'yi tıklayın.
- Oluşturmak istediğiniz tetikleyicinin türünü seçip yapılandırın.
- Kaydet'i tıklayın.
Tetikleyicileri programatik olarak yönetme
Komut dosyası hizmetini kullanarak da tetikleyicileri programatik olarak oluşturabilir ve silebilirsiniz. ScriptApp.newTrigger(functionName)
işlevini çağırarak başlayın. Bu işlev, TriggerBuilder
döndürür.
Aşağıdaki örnekte, biri 6 saatte bir, diğeri ise her pazartesi saat 9:00'da (komut dosyanızın ayarlandığı saat diliminde) etkinleşen iki zamana dayalı tetikleyicinin nasıl oluşturulacağı gösterilmektedir.
Bir sonraki örnekte, e-tablo için nasıl yüklenebilecek bir açık tetikleyici oluşturulacağı gösterilmektedir. Basit bir onOpen()
tetikleyicinin aksine, yüklenebilir tetikleyicinin komut dosyasının e-tabloya bağlanmasına gerek olmadığını unutmayın. Bu tetikleyiciyi bağımsız bir komut dosyasından oluşturmak için SpreadsheetApp.getActive()
değerini SpreadsheetApp.openById(id)
çağrısıyla değiştirmeniz yeterlidir.
Mevcut bir yüklenebilir tetikleyiciyi programatik olarak değiştirmek için tetikleyiciyi silmeniz ve yeni bir tetikleyici oluşturmanız gerekir. Daha önce bir tetikleyicinin kimliğini depoladıysanız kimliği aşağıdaki işleve bağımsız değişken olarak göndererek silebilirsiniz.
Tetikleyici oluşturmadan önce, ilişkili işlevin gerekli tüm OAuth izinlerine sahip olduğunu doğrulamanızı öneririz.
Tetikleyicilerdeki hatalar
Yüklenebilir bir tetikleyici tetiklendiğinde ancak işlev bir istisna oluşturduğunda veya başka bir şekilde başarılı bir şekilde çalıştıramadığında ekranınızda bir hata mesajı görmezsiniz. Sonuçta, zamana dayalı bir tetikleyici çalıştırıldığında veya başka bir kullanıcı form gönderme tetikleyicinizi etkinleştirdiğinde bilgisayarınızın başında olmayabilirsiniz.
Bunun yerine Apps Komut Dosyası size aşağıdaki gibi bir e-posta gönderir:
From: [email protected] Subject: Summary of failures for Google Apps Script Your script has recently failed to finish successfully. A summary of the failure(s) is shown below.
E-postada tetikleyiciyi devre dışı bırakma veya yeniden yapılandırma bağlantısı yer alır. Komut dosyası bir Google E-Tablolar, Dokümanlar veya Formlar dosyasına bağlıysa e-postada söz konusu dosyanın bağlantısı da yer alır. Bu bağlantılar, tetikleyiciyi devre dışı bırakmanıza veya hatayı düzeltmek için komut dosyasını düzenlemenize olanak tanır.
Google Hesabınızla ilişkili tüm tetikleyicileri incelemek ve artık ihtiyacınız olmayan tetikleyicileri devre dışı bırakmak için aşağıdaki adımları uygulayın:
script.google.com
adresine gidin.- Sol tarafta Tetikleyicilerim'i tıklayın.
Bir tetikleyiciyi silmek için tetikleyicinin sağındaki Diğer
> Tetikleyiciyi sil'i tıklayın.
Eklentilerdeki tetikleyiciler
Yüklenebilir tetikleyicilere ek olarak, eklentilerde manifest tetikleyicileri de kullanabilirsiniz. Daha fazla bilgi için Google Workspace eklentileri için tetikleyiciler başlıklı makaleyi inceleyin.