Apps Script tetikleyicileri, belirli bir etkinlik gerçekleştiğinde belirtilen bir komut dosyası işlevinin (tetikleyici işlevi) yürütülmesine neden olur. Yalnızca belirli etkinlikler tetikleyicilerin tetiklenmesine neden olabilir ve her Google Workspace uygulaması farklı bir etkinlik grubunu destekler.
Bir tetikleyici tetiklendiğinde bir etkinlik nesnesi oluşturulur. Bu JSON yapısı, gerçekleşen etkinlikle ilgili ayrıntıları içerir. Etkinlik nesnesi yapısındaki bilgiler, tetikleyici türüne göre farklı şekilde düzenlenir.
Etkinlik nesnesi oluşturulduktan sonra Apps Script, tetikleyici işlevine parametre olarak iletir. Tetikleyici işlevi, etkinliğe yanıt vermek için uygun işlemleri yapmak üzere kendiniz uygulamanız gereken bir geri çağırma işlevidir. Örneğin, bir Düzenleyici eklentisinde, bir doküman açıldığında eklenti menü öğeleri oluşturmak için tetikleyici kullanılır. Bu durumda, eklentinin ihtiyaç duyduğu menü öğelerini oluşturmak için onOpen(e)
tetikleyici işlevini (muhtemelen etkinlik nesnesinde bulunan verileri kullanarak) uygularsınız.
Bu sayfada, düzenleyici eklenti projelerinde tetikleyicilerin kullanımıyla ilgili kurallar sağlanmaktadır.
Düzenleyici eklentisi tetikleyici türleri
Düzenleyici eklentilerinde, Apps Komut Dosyası projelerinde kullanılabilen genel tetikleyici türlerinin çoğunu (basit tetikleyiciler ve çoğu yüklenebilir tetikleyici dahil) kullanabilirsiniz. Kullanılabilir tetikleyici türlerinin tam listesi, genişletilen uygulamaya bağlıdır.
Aşağıdaki tabloda, Düzenleyici eklentilerinin kullanabileceği basit ve yüklenebilir tetikleyici türleri gösterilmekte ve ilgili etkinlik nesnelerinin bağlantıları sağlanmaktadır:
Etkinlik | Etkinlik nesnesi | Basit tetikleyiciler | Yüklenebilir tetikleyiciler |
---|---|---|---|
Aç Düzenleyici dosyası açılır. |
Dokümanlar onOpen etkinlik nesnesi Formlar onOpen etkinlik nesnesi E-Tablolar onOpen etkinlik nesnesi Slaytlar onOpen etkinlik nesnesi |
Dokümanlar Formlar* E-Tablolar Slaytlar
|
Dokümanlar Formlar E-Tablolar |
Yükle Eklentiyi yükleyin. |
onInstall etkinlik nesnesi |
Dokümanlar Formlar E-Tablolar Slaytlar
|
|
Düzenleme E-tablo hücre içeriği değiştirilir. |
E-Tablolar onEdit etkinlik nesnesi |
E-Tablolar
|
E-Tablolar |
Değişiklik E-tablodaki içerik düzenlenir veya biçimlendirilir. |
Sheets onChange etkinlik nesnesi |
E-Tablolar |
|
Form-submit Bir Google formu gönderilir. |
Formlar form gönderme etkinliği nesnesi E-Tablolar form gönderme etkinliği nesnesi |
Formlar E-Tablolar |
|
Zaman denetimli (saat) Tetikleyici, belirtilen bir zamanda veya aralıkta etkinleştirilir. |
Zamana dayalı etkinlik nesnesi |
Dokümanlar Formlar E-Tablolar Slaytlar |
* Google Formlar için açık etkinliği, bir kullanıcı yanıt vermek üzere formu açtığında değil, bir düzenleyici formu değiştirmek için açtığında gerçekleşir.
Eklentilerde basit tetikleyiciler
Basit tetikleyiciler, ayrılmış bir işlev adı grubu kullanır, yetkilendirme gerektiren hizmetleri kullanamaz ve otomatik olarak kullanıma etkinleştirilir. Bazı durumlarda, basit bir tetikleyici etkinliği yerine yüklenebilir tetikleyici kullanılabilir.
Aşağıdaki ayrılmış adlardan birini kullanarak bir işlev uygulayarak eklentiye basit bir tetikleyici ekleyebilirsiniz:
onOpen(e)
, kullanıcı bir doküman, e-tablo veya sunu açtığında yürütülür.onOpen(e)
, bir form düzenleyicide açıldığında da yürütülebilir (ancak forma yanıt verirken değil). Bu işlev yalnızca kullanıcının söz konusu dosyayı düzenleme izni varsa yürütülür ve genellikle menü öğeleri oluşturmak için kullanılır.onInstall(e)
, kullanıcı bir eklenti yüklediğinde çalışır. GenellikleonInstall(e)
, yalnızcaonOpen(e)
çağrılmak için kullanılır. Bu, eklenti menüsünün yükleme işleminden hemen sonra kullanıcının sayfayı yenilemesine gerek kalmadan görünmesini sağlar.onEdit(e)
, bir kullanıcı e-tablodaki bir hücrenin değerini değiştirdiğinde çalışır. Bu tetikleyici, hücre taşıma, biçimlendirme veya hücre değerlerini değiştirmeyen diğer değişikliklere yanıt olarak etkinleştirilmez.
Kısıtlamalar
Eklentilerdeki basit tetikleyiciler, diğer türdeki Apps Komut Dosyası projelerindeki basit tetikleyicileri yöneten aynı kısıtlamalara tabidir. Eklentileri tasarlarken aşağıdaki kısıtlamalara özellikle dikkat edin:
- Dosya salt okunur (görüntüleme veya yorum) modunda açılırsa basit tetikleyiciler çalışmaz. Bu davranış, eklenti menülerinizin doldurulmasını engeller.
- Düzenleyici eklentileri, belirli durumlarda
onOpen(e)
veonEdit(e)
basit tetikleyicilerini yetkilendirmesiz modda çalıştırır. Bu mod, eklenti yetkilendirme modelinde belirtildiği gibi bazı ek komplikasyonlar sunar. - Basit tetikleyiciler, eklenti yetkilendirme modelinde belirtildiği şekilde hizmetleri kullanamaz veya yetkilendirme gerektiren başka işlemler yapamaz.
- Basit tetikleyiciler 30 saniyeden uzun süre çalışamaz. Basit bir tetikleyici işlevinde yapılan işlem miktarını en aza indirin.
- Basit tetikleyiciler, Apps Komut Dosyası tetikleyici kota sınırlamalarına tabidir.
Eklentilerde yüklenebilir tetikleyiciler
Eklentiler, Apps Komut Dosyası Script
hizmetiyle yüklenebilir tetikleyicileri programatik olarak oluşturup değiştirebilir. Eklenti yüklenebilir tetikleyicileri manuel olarak oluşturulamaz. Basit tetikleyicilerin aksine, yüklenebilir tetikleyiciler yetkilendirme gerektiren hizmetleri kullanabilir.
Eklentilerdeki yüklenebilir tetikleyiciler, kullanıcı hatalarla karşılaştığında kullanıcıya hata e-postaları göndermez. Bunun nedeni, çoğu durumda kullanıcının sorunu çözememesidir. Bu nedenle, mümkün olduğunda eklentinizi kullanıcı adına hataları sorunsuz bir şekilde ele alacak şekilde tasarlamanız gerekir.
Eklentiler aşağıdaki yüklenebilir tetikleyicileri kullanabilir:
- Yüklenebilir Aç tetikleyicileri, kullanıcı bir doküman veya e-tablo açtığında ya da düzenleyicide bir form açıldığında (ancak forma yanıt verildiğinde değil) çalışır.
- Düzenle yüklenebilir tetikleyicileri, kullanıcı bir e-tablodaki hücre değerini değiştirdiğinde yürütülür. Bu tetikleyici, hücre değerlerini değiştirmeyen biçimlendirme veya diğer değişikliklere yanıt olarak tetiklenmez.
- Yüklenebilir değişiklik tetikleyicileri, kullanıcı bir e-tabloda herhangi bir değişiklik yaptığında (e-tabloda biçimlendirme düzenlemeleri ve değişiklikler de dahil olmak üzere (ör. satır ekleme)) çalışır.
Form-submit yüklenebilir tetikleyicileri, bir Google Form yanıtı gönderildiğinde çalışır.
Zaman denetimli tetikleyiciler (saat tetikleyicileri olarak da bilinir) belirli bir zamanda veya düzenli bir zaman aralığında tekrar tekrar tetiklenir.
Yüklenebilir tetikleyicileri yetkilendirme
Normalde, bir geliştirici bir eklentiyi ek yetkilendirme gerektiren yeni hizmetleri kullanacak şekilde güncellediğinde, kullanıcılardan eklentiyi bir sonraki kullanımlarında yeniden yetkilendirmeleri istenir.
Ancak tetikleyici kullanan eklentiler, özel yetkilendirme zorluklarıyla karşılaşır. Form gönderimlerini izlemek için tetikleyici kullanan bir eklenti düşünün: Form oluşturucu, eklentiyi ilk kez kullandığında yetkilendirebilir ve ardından formu hiç yeniden açmadan aylarca veya yıllarca çalışmasına izin verebilir. Eklenti geliştiricisi, eklentiyi ek yetkilendirme gerektiren yeni hizmetleri kullanacak şekilde güncellerse form oluşturucu formu hiç yeniden açmadığı için yeniden yetkilendirme iletişim kutusunu hiç görmez ve eklenti çalışmayı durdurur.
Normal Apps Komut Dosyası projelerindeki tetikleyicilerin aksine, eklentilerdeki tetikleyiciler yeniden yetkilendirme gerektirse bile tetiklenmeye devam eder. Ancak, komut dosyası, komut dosyasının sahip olmadığı yetkilendirme gerektiren bir kod satırına rastlarsa yine başarısız olur. Geliştiriciler bu durumu önlemek için ScriptApp.getAuthorizationInfo()
yöntemini kullanarak eklentinin yayınlanan sürümleri arasında değişen kod bölümlerinin erişimini kısıtlayabilir.
Yetkilendirmeyle ilgili sorunların önüne geçmek için tetikleyici işlevlerde kullanılması önerilen yapının bir örneğini aşağıda bulabilirsiniz. Örnek tetikleyici işlevi, bir Google E-Tablolar eklentisinde form gönderme etkinliğine yanıt verir ve yeniden yetkilendirme gerekiyorsa eklenti kullanıcısına şablonlu HTML kullanarak bir uyarı e-postası gönderir.
Code.gs
authorizationemail.html
Kısıtlamalar
Eklentilerdeki yüklenebilir tetikleyiciler, diğer türdeki Apps Komut Dosyası projelerindeki yüklenebilir tetikleyicileri yöneten aynı kısıtlamalara tabidir.
Bu kısıtlamalara ek olarak, özellikle eklentilerdeki yüklenebilir tetikleyiciler için çeşitli kısıtlamalar geçerlidir:
- Her eklentide, kullanıcı başına ve belge başına her türden yalnızca bir tetikleyici olabilir. Örneğin, belirli bir e-tabloda belirli bir kullanıcının yalnızca bir düzenleme tetikleyicisi olabilir. Ancak kullanıcının aynı e-tabloda form gönderme tetikleyicisi veya zamana dayalı tetikleyicisi de olabilir. Aynı e-tabloya erişimi olan farklı bir kullanıcının kendi ayrı tetikleyici grubu olabilir.
- Eklentiler yalnızca eklentinin kullanıldığı dosya için tetikleyici oluşturabilir. Yani A Google Dokümanında kullanılan bir eklenti, B Google Dokümanının açılmasını izleyen bir tetikleyici oluşturamaz.
- Zamana dayalı tetikleyiciler saatte bir defadan daha sık çalışamaz.
- Yüklenebilir tetikleyici tarafından çalıştırılan kod bir istisna oluşturduğunda eklentiler kullanıcıya otomatik olarak e-posta göndermez. Hata durumlarını kontrol etmek ve sorunsuz şekilde ele almak geliştiricinin sorumluluğundadır.
- Eklenti tetikleyicileri aşağıdaki durumlardan herhangi birinde etkinleşmeyi durdurur:
- Eklenti kullanıcı tarafından kaldırılırsa
- Eklenti bir dokümanda devre dışıysa (yeniden etkinleştirilirse tetikleyici tekrar çalışır) veya
- Geliştirici, eklentiyi yayından kaldırırsa veya eklenti mağazasına bozuk bir sürüm gönderirse.
- Eklenti tetikleyici işlevleri, izinsiz bir hizmeti kullanan koda ulaşana kadar yürütülür ve bu noktada durur. Bu durum yalnızca eklenti yayınlanmışsa geçerlidir. Komut dosyasının herhangi bir kısmının yetkilendirilmesi gerekiyorsa normal bir Apps Komut Dosyası projesindeki veya yayınlanmamış bir eklentideki aynı tetikleyici hiç çalışmaz.
- Yüklenebilir tetikleyiciler, Apps Komut Dosyası tetikleyici kota sınırlamalarına tabidir.