Wie bei einfachen Triggern können auch installierbare Trigger Apps Script führt automatisch eine Funktion aus, wie das Öffnen eines Dokuments. Installierbare Trigger bieten jedoch mehr Flexibilität als einfache Trigger: Sie können Dienste die erfordern Autorisierung, werden verschiedene zusätzliche Ereignistypen angeboten, z. B. zeitgesteuerte Ereignisse Trigger und können programmatisch gesteuert werden. Für einfache und installierbare Trigger, übergibt Apps Script die ausgelöste Funktion eine Ereignisobjekt, das Informationen enthält in dem das Ereignis aufgetreten ist.
Einschränkungen
Installierbare Trigger bieten mehr Flexibilität als einfache Trigger, unterliegen immer noch einigen Einschränkungen:
- Sie werden nicht ausgeführt, wenn eine Datei im Lesemodus (Anzeigen oder Kommentieren) geöffnet wird. Bei eigenständigen Scripts benötigen Nutzer mindestens Lesezugriff auf die Scriptdatei, damit Trigger ordnungsgemäß ausgeführt werden können.
Skriptausführungen und API-Anfragen führen nicht zum Ausführen von Triggern. Beispiel: Anrufen
FormResponse.submit()
zum Senden einer neuen Formularantwort führt nicht dazu, dass der Sendeauslöser des Formulars ausgeführt wird.Installierbare Trigger werden immer unter dem Konto der Person ausgeführt, die den Trigger erstellt hat . Wenn Sie beispielsweise einen installierbaren offenen Trigger erstellen, wird dieser ausgeführt, wenn ein Kollege das Dokument öffnet (falls er Bearbeitungszugriff hat), aber es läuft unter Ihrem Konto. Wenn Sie also einen Trigger E-Mail senden, wenn ein Dokument geöffnet wird, wird die E-Mail immer über Ihr Konto und nicht unbedingt das Konto, in dem das Dokument geöffnet wurde. Sie können jedoch können Sie für jedes Konto einen installierbaren Trigger erstellen, in einer E-Mail, die von jedem Konto gesendet wird.
Ein Konto kann keine Trigger sehen, die von einem zweiten Konto installiert wurden, können diese Trigger aber dennoch im ersten Konto aktivieren.
Installierbare Trigger unterliegen dem Apps Script-Trigger die Kontingentlimits.
Zeitgesteuerte Trigger
Ein zeitgesteuerter Trigger (auch als Uhren-Trigger bezeichnet) ähnelt einem Cronjob unter Unix. Zeitgesteuerte Trigger Skripte werden zu einer bestimmten Zeit oder in wiederkehrenden Intervallen ausgeführt, oder so selten wie einmal im Monat. (Beachten Sie, dass ein Add-on können Sie einen zeitgesteuerten Trigger höchstens einmal pro Stunde. Es kann etwas dauern zufällig angeordnet, z. B. wenn Sie einen wiederkehrenden Trigger für 9:00 Uhr Apps Script wählt eine Zeit zwischen 9:00 und 10:00 Uhr aus und Dieses Timing von Tag zu Tag einheitlich, sodass 24 Stunden verstreichen, bevor der wieder ausgelöst.
Im Folgenden finden Sie ein Beispiel für eine Google Chat App veröffentlicht, in dem jede Minute eine Nachricht in jedem Gruppenbereich gepostet wird, in dem sich die App befindet:
// 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),
});
}
Ereignisgesteuerte Trigger
Installierbare ereignisgesteuerte Trigger ähneln konzeptionell einfachen Triggern wie onOpen()
, können aber auf zusätzliche Ereignisse reagieren und verhalten sich anders.
Beispiel: Der installierbare offene Trigger für Google Tabellen
wird immer dann aktiviert, wenn die Tabelle von einem
Nutzer mit Bearbeitungszugriff geöffnet wird,
genau wie der einfache onOpen()
-Trigger. Die installierbare Version kann jedoch
rufen Sie Dienste an,
Autorisierung. Die installierbare
wird mit der Autorisierung des Nutzers ausgeführt, der den Trigger erstellt hat, auch wenn
Ein anderer Nutzer mit Bearbeitungszugriff
öffnet die Tabelle.
Es gibt mehrere installierbare Trigger für Google Workspace Anwendungen:
- Ein installierbarer open-Trigger wird ausgeführt, wenn ein Nutzer eine Tabelle, ein Dokument oder ein Formular öffnet, das er bearbeiten darf.
- Ein installierbarer edit-Trigger wird ausgeführt, wenn ein Nutzer einen Wert in einem Tabelle.
- Ein installierbarer Änderungstrigger wird ausgeführt, wenn ein Nutzer die Struktur eines der Tabelle selbst, indem Sie z. B. ein neues Tabellenblatt hinzufügen oder ein Spalte.
- Ein installierbarer Trigger vom Typ Formular einreichen wird ausgeführt, wenn ein Nutzer ein Formular ausfüllt. Es gibt zwei Versionen des Triggers eine für Google Formulare selbst und eine für Tabellen, wenn das Formular an eine Tabelle gesendet wird.
- Ein installierbarer Kalendertermin-Trigger wird ausgeführt, wenn die Kalendertermine eines Nutzers erstellt, bearbeitet oder gelöscht werden.
Installierbare Trigger können in eigenständigen und gebundenen Skripts verwendet werden. Beispiel:
kann ein eigenständiges Skript programmatisch einen installierbaren Trigger für einen
Google Tabellen-Datei durch Aufrufen von
TriggerBuilder.forSpreadsheet(key)
und die Tabellen-ID übergeben.
Trigger manuell verwalten
So erstellen Sie manuell einen installierbaren Trigger im Skripteditor: führen Sie folgende Schritte aus:
- Öffnen Sie Ihr Apps Script-Projekt.
- Klicken Sie links auf Trigger .
- Klicken Sie rechts unten auf Trigger hinzufügen.
- Wählen Sie den Triggertyp aus, den Sie erstellen möchten, und konfigurieren Sie ihn.
- Klicken Sie auf Speichern.
Trigger programmatisch verwalten
Sie können Trigger auch programmatisch erstellen und löschen. Verwenden Sie dazu die
Skriptdienst. Anruf starten
ScriptApp.newTrigger(functionName)
,
Es wird ein
TriggerBuilder
Im folgenden Beispiel wird gezeigt, wie Sie zwei zeitgesteuerte Trigger erstellen: einen, der alle sechs Stunden ausgelöst wird, und einen, der jeden Montag um 9:00 Uhr (in der Zeitzone, für die Ihr Script festgelegt ist) ausgelöst wird.
Im nächsten Beispiel wird gezeigt, wie Sie
einen installierbaren offenen Trigger für eine
Tabelle. Im Gegensatz zu einem einfachen onOpen()
-Trigger wird das Skript für
muss der installierbare Trigger nicht an die Tabelle gebunden sein. Zum Erstellen
dieses Triggers von einem
eigenständigen Skript aus, ersetzen Sie
SpreadsheetApp.getActive()
mit einem Anruf bei
SpreadsheetApp.openById(id)
Wenn Sie einen vorhandenen installierbaren Trigger programmatisch ändern möchten, müssen Sie ihn löschen und einen neuen erstellen. Wenn Sie die ID eines Triggers bereits gespeichert haben, Löschen Sie sie, indem Sie die ID als Argument an die Funktion unten übergeben.
Fehler in Triggern
Wenn ein installierbarer Trigger ausgelöst wird, die Funktion aber eine Ausnahme oder nicht erfolgreich ausgeführt wird, wird in diesem Fall keine Fehlermeldung Bildschirm. Denn wenn ein zeitgesteuerter Trigger ausgeführt wird oder ein anderer Nutzer wenn Sie nicht einmal am Computer sind.
Stattdessen erhalten Sie von Apps Script eine E-Mail wie die folgende:
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.
Die E-Mail enthält einen Link, über den Sie den Trigger deaktivieren oder neu konfigurieren können. Wenn die Skript ist gebunden in Google Tabellen, Google Docs oder Datei enthält, enthält die E-Mail auch einen Link zu dieser Datei. Über diese Links können Sie Deaktivieren Sie den Trigger oder bearbeiten Sie das Skript, um den Fehler zu beheben.
Um alle Trigger zu überprüfen, die mit Ihrem Google-Konto verknüpft sind, und Deaktivieren Sie die Trigger, die Sie nicht mehr benötigen, so:
- Rufen Sie
script.google.com
auf. - Klicken Sie links auf My Triggers (Meine Trigger).
Wenn Sie einen Trigger löschen möchten, klicken Sie rechts daneben auf das Dreipunkt-Menü
> Trigger löschen.
Trigger in Add-ons
Neben installierbaren Triggern können Sie in Add-ons auch Manifesttrigger verwenden. Weitere Informationen finden Sie unter Trigger für Google Workspace-Add-ons.