Basit tetikleyiciler gibi yüklenebilir tetikleyiciler de Apps Komut Dosyası, belirli bir etkinlik veya etkinlik olduğunda işlemler gerçekleştirilir. Ancak yüklenebilir tetikleyiciler daha esnek olmasını sağlar: Tetikleyiciler hizmetler gerektiren yetkilendirme zaman odaklı (saat) ve çeşitli ek etkinlikler sunar. ve programatik olarak kontrol edilebilir. Hem basit hem de Apps Komut Dosyası, tetiklenen işlevi etkinlik nesnesi olayın gerçekleştiği bağlam hakkında.
Kısıtlamalar
Yüklenebilir tetikleyiciler, basit tetikleyicilerden daha fazla esneklik sunsa da çeşitli kısıtlamalara tabi olmaya devam ederler:
- Bir dosya salt okuma (görüntüleme veya yorum yapma) modunda açılırsa çalıştırılmazlar. Örneğin, komut dosyalarını indirmek için, kullanıcıların en azından komut dosyası için düzgün çalışmasını sağlamalısınız.
Komut dosyası yürütme ve API istekleri, tetikleyicilerin çalıştırılmasına neden olmaz. Örneğin, arama
FormResponse.submit()
yeni bir form yanıtı göndermek, formun gönderme tetikleyicisinin çalıştırılmasına neden olmaz.Yüklenebilir tetikleyiciler her zaman, uygulamanızı oluşturan kullanıcının hesabı altında çalışır oluşturabilirsiniz. Örneğin, yüklenebilir bir açık tetikleyici oluşturursanız bu tetikleyiciyi çalıştırır İş arkadaşınız dokümanı açtığında (iş arkadaşınızın düzenleme erişimi varsa), ancak sizin hesabınız olarak çalışır. Bu, dönüşüm işlemi için bir tetikleyici oluşturursanız doküman açıldığında e-posta gönder; e-posta her zaman (belgeyi açan hesap her zaman açık değildir). Ancak, her hesap için yüklenebilir bir tetikleyici oluşturabilirsiniz. Bu da tek bir e-postayla gönderin.
Belirli bir hesap, ikinci bir hesaptan yüklenen tetikleyicileri göremez, hatta ancak ilk hesap bu tetikleyicileri etkinleştirmeye devam edebilir.
Yüklenebilir tetikleyiciler, Apps Komut Dosyası tetikleyicisine tabidir. kota sınırlarını kaldırın.
Zamana dayalı tetikleyiciler
Zaman odaklı tetikleyici (saat tetikleyici olarak da adlandırılır) cron işi hakkında daha fazla bilgi edinin. Zamana dayalı tetikleyiciler, komut dosyaları belirli bir zamanda veya yinelenen bir arada, daha sık aralıklarla gibi seyrek şekilde ekleyebilirsiniz. ( eklenti zamana dayalı bir tetikleyici kullanabilir saatte en fazla bir kez kullanmayın.) Zaman biraz farklı olabilir rastgele yapılır. Örneğin, 09:00'da yinelenen bir tetikleyici oluşturursanız Apps Komut Dosyası, 09:00 ile 10:00 arası bir saat seçer ve sonra o zamanlamanın günden güne tutarlı olmasını, yani etkinleşir.
Aşağıda bir Google Chat uygulaması uygulamanın bulunduğu her alana dakikada bir mesaj gönderen:
// Example app for Google Chat that demonstrates app-initiated messages
// by spamming the user every minute.
//
// This app makes use of the Apps Script OAuth2 library at:
// https://github.com/googlesamples/apps-script-oauth2
//
// Follow the instructions there to add the library to your script.
// When added to a space, we store the space's ID in ScriptProperties.
function onAddToSpace(e) {
PropertiesService.getScriptProperties()
.setProperty(e.space.name, '');
return {
'text': 'Hi! I\'ll post a message here every minute. ' +
'Please remove me after testing or I\'ll keep spamming you!'
};
}
// When removed from a space, we remove the space's ID from ScriptProperties.
function onRemoveFromSpace(e) {
PropertiesService.getScriptProperties()
.deleteProperty(e.space.name);
}
// Add a trigger that invokes this function every minute in the
// "Edit > Current Project's Triggers" menu. When it runs, it
// posts in each space the app was added to.
function onTrigger() {
var spaceIds = PropertiesService.getScriptProperties()
.getKeys();
var message = { 'text': 'Hi! It\'s now ' + (new Date()) };
for (var i = 0; i < spaceIds.length; ++i) {
postMessage(spaceIds[i], message);
}
}
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
// The values below are copied from the JSON file downloaded upon
// service account creation.
// For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines
// of the private key
var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';
// Posts a message into the given space ID via the API, using
// service account authentication.
function postMessage(spaceId, message) {
var service = OAuth2.createService('chat')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
.setClientId(SERVICE_ACCOUNT_EMAIL)
.setPropertyStore(PropertiesService.getUserProperties())
.setScope(SCOPE);
if (!service.hasAccess()) {
Logger.log('Authentication error: %s', service.getLastError());
return;
}
var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
UrlFetchApp.fetch(url, {
method: 'post',
headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
contentType: 'application/json',
payload: JSON.stringify(message),
});
}
Etkinliğe dayalı tetikleyiciler
Yüklenebilir etkinliğe dayalı tetikleyiciler kavram olarak
basit tetikleyiciler
onOpen()
örneğine benzer, ancak ek etkinliklere yanıt verebilir ve
değiştirebilirsiniz.
Örneğin, Google E-Tablolar için yüklenebilir açık tetikleyici
e-tablo düzenleme erişimine sahip herhangi bir kullanıcı tarafından açıldığında etkinleştirilir.
Tıpkı basit onOpen()
tetikleyicisi gibi. Ancak yüklenebilir sürüm,
gerektiren hizmetleri
yetkilendirme. Yüklenebilir
sürümü, tetikleyiciyi oluşturan kullanıcının yetkilendirmesiyle çalışır;
e-tabloyu düzenleme erişimine sahip başka bir kullanıcı açarsa.
Etiketleme için Google Analytics 4'e Google Workspace uygulamalar:
- Kullanıcı bir e-tabloyu açtığında yüklenebilir bir open tetikleyicisi çalışır. izin verilen doküman veya form olabilir.
- Kullanıcı reklam öğesindeki bir değeri değiştirdiğinde, e-tablo kullanarak yapabilirsiniz.
- Kullanıcı bir öğenin yapısını değiştirdiğinde, yüklenebilir bir değişiklik tetikleyicisi (örneğin, yeni bir sayfa ekleyerek veya bir sayfayı kaldırarak) sütununa girin.
- Kullanıcı bir forma yanıt verdiğinde yüklenebilir bir form gönderme tetikleyicisi çalışır. Form gönderme tetikleyicisinin iki sürümü vardır. Google Formlar'ın kendisi için bir web ve form e-tabloya gönderilirse E-Tablolar için bir tane.
- Bir kullanıcının takvim etkinlikleri olduğunda yüklenebilir bir takvim etkinliği tetikleyicisi çalıştırılır oluşturulmaları, düzenlenmeleri veya silinmelerini sağlar.
Yüklenebilir tetikleyicileri bağımsız ve bağlı komut dosyalarında kullanabilirsiniz. Örneğin,
tek başına bir komut dosyası, tek başına bir komut dosyası için
rastgele bir Google E-Tablolar dosyası için
TriggerBuilder.forSpreadsheet(key)
ve e-tablonun kimliğini iletmeniz gerekir.
Tetikleyicileri manuel olarak yönetme
Komut dosyası düzenleyicide manuel olarak yüklenebilir bir tetikleyici oluşturmak için şu adımları uygulayın:
- Apps Komut Dosyası projenizi açın.
- Solda Tetikleyiciler'i tıklayın.
- Sağ altta Tetikleyici Ekle'yi tıklayın.
- Oluşturmak istediğiniz tetikleyici türünü seçip yapılandırın.
- Kaydet'i tıklayın.
Tetikleyicileri programatik olarak yönetme
Ayrıca, aşağıdakileri kullanarak tetikleyicileri programatik olarak oluşturabilir ve silebilirsiniz:
Komut dosyası hizmeti. Şu numarayı arayarak başlayın:
ScriptApp.newTrigger(functionName)
Bu,
TriggerBuilder
.
Aşağıdaki örnekte, biri her 6 saatte bir ve her pazartesi sabah 9'da (saat diliminde) etkinleşen bir emin olun.
Aşağıdaki örnekte, bir
e-tablo kullanarak yapabilirsiniz. Basit bir onOpen()
tetikleyicisinin aksine,
Yüklenebilir tetikleyicinin e-tabloya bağlı olması gerekmez. Oluşturmak için
tek başına bir komut dosyasından bu tetikleyiciyi
SpreadsheetApp.getActive()
adlı kişiye çağrı:
SpreadsheetApp.openById(id)
Mevcut bir yüklenebilir tetikleyiciyi programatik olarak değiştirmek için onu silmeniz gerekir ve yeni bir hesap oluşturun. Daha önce bir tetikleyicinin kimliğini sakladıysanız şunu yapabilirsiniz: kimliği aşağıdaki işleve bağımsız değişken olarak ileterek silebilirsiniz.
Tetikleyicilerdeki hatalar
Yüklenebilir bir tetikleyici etkinleştiğinde, ancak işlev bir istisna oluşturduğunda veya başarılı bir şekilde çalışmazsa tıklayın. Sonuçta, zamana dayalı bir tetikleyici çalıştığında veya başka bir kullanıcı etkinleştiğinde form gönderme tetikleyicisinin olmadığı durumlarda bile bilgisayar başında olmayabilirsiniz.
Bunun yerine Apps Komut Dosyası size aşağıdakine benzer bir e-posta gönderir:
From: noreply-apps-scripts-notifications@google.com 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-posta, tetikleyiciyi devre dışı bırakmak veya yeniden yapılandırmak için bir bağlantı içerir. Öğe komut dosyası bağ Google E-Tablolar, Dokümanlar veya Formlar'a dosyası, e-postada söz konusu dosyanın bağlantısı da bulunur. Bu bağlantılar şunları yapmanıza olanak tanır: tetikleyiciyi devre dışı bırakın veya hatayı düzeltmek için komut dosyasını düzenleyin.
Google Hesabınızla ilişkilendirilmiş 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.- Solda Tetikleyicilerim'i tıklayın.
Bir tetikleyiciyi silmek için tetikleyicinin sağındaki Diğer'i tıklayın.
Tetikleyiciyi sil.
Eklentilerdeki tetikleyiciler
Yüklenebilir tetikleyicilere ek olarak manifest tetikleyicilerini şurada kullanabilirsiniz: kullanılabilir. Daha fazla bilgi için bkz. Google Workspace eklentilerini tetikleyen tetikleyiciler.