Google Workspace-Add-ons, die Gmail erweitern, können eine Benutzeroberfläche bereitstellen, wenn der Nutzer Nachrichten liest. So können Add-ons Aufgaben automatisieren, die auf Nachrichteninhalte reagieren, z. B. zusätzliche Informationen zur Nachricht anzeigen, abrufen oder senden.
Benutzeroberfläche für Nachrichten von Google Workspace-Add-ons aufrufen
Es gibt zwei Möglichkeiten, die Benutzeroberfläche für Nachrichten eines Add-ons aufzurufen. Die erste Möglichkeit besteht darin, eine Nachricht zu öffnen, während das Add-on bereits geöffnet ist (z. B. wenn Sie die Startseite des Add-ons im Gmail-Posteingang ansehen). Die zweite Möglichkeit besteht darin, das Add-on zu starten, während Sie eine Nachricht ansehen.
In beiden Fällen führt das Add-on die entsprechende kontextbezogene Triggerfunktion aus, die im Add-on Manifest definiert ist. Der Trigger wird auch ausgelöst, wenn der Nutzer zu einer anderen Nachricht wechselt, während das Add-on noch geöffnet ist. Die kontextbezogene Triggerfunktion erstellt die Benutzeroberfläche für Nachrichten für diese Nachricht, die Gmail dem Nutzer dann anzeigt.
Nachrichten-Add-on erstellen
So fügen Sie einem Add-on Nachrichtenfunktionen hinzu:
- Fügen Sie dem Manifest des Add-on-Skript
projekts die entsprechenden Felder hinzu,
einschließlich der für die
Nachrichtenfunktionen erforderlichen Bereiche. Fügen Sie dem Manifest ein
Feld für bedingte Trigger
mit dem
unconditionalWert{}hinzu. - Implementieren Sie eine kontextbezogene Triggerfunktion, die eine Benutzeroberfläche für Nachrichten erstellt, wenn der Nutzer das Add-on in einer Nachricht auswählt.
- Implementieren Sie die zugehörigen Funktionen, die erforderlich sind, um auf die UI-Interaktionen des Nutzers zu reagieren.
Kontextbezogene Trigger
Um Nutzern beim Lesen von Nachrichten zu helfen, können Add-ons in ihren Manifesten einen kontextbezogenen Trigger definieren. Wenn der Nutzer eine Gmail-Nachricht öffnet (während das Add-on geöffnet ist), die die Triggerkriterien erfüllt* wird der Trigger ausgelöst. Ein ausgelöster Trigger führt eine kontextbezogene Triggerfunktion aus, die die Benutzeroberfläche des Add-ons erstellt und sie zur Anzeige an Gmail zurückgibt. An diesem Punkt kann der Nutzer mit der Benutzeroberfläche interagieren.
Kontextbezogene Trigger werden im Projekt
manifest Ihres Add-ons definiert.
Die Triggerdefinition gibt Gmail an, welche Triggerfunktion unter welchen Bedingungen ausgelöst werden soll. Mit dem folgenden Manifest-Snippet wird beispielsweise ein bedingungsloser Trigger festgelegt, der die Triggerfunktion onGmailMessageOpen() aufruft, wenn eine Nachricht geöffnet wird:
{
...
"addOns": {
"common": {
...
},
"gmail": {
"contextualTriggers": [
{
"unconditional": {},
"onTriggerFunction": "onGmailMessageOpen"
}
],
...
},
...
}
...
}Kontextbezogene Triggerfunktion
Jeder kontextbezogene Trigger muss eine entsprechende Triggerfunktion haben, die die Benutzeroberfläche Ihres Add-ons erstellt. Sie geben
diese Funktion im Feld
onTriggerFunction
Ihres Manifests an. Sie implementieren diese Funktion so, dass sie ein
Aktionsereignisobjekt
als Argument akzeptiert und entweder ein einzelnes
Card-Objekt oder ein Array von
Card-Objekten zurückgibt.
Wenn ein kontextbezogener Trigger für eine bestimmte Gmail-Nachricht ausgelöst wird, ruft er
diese Funktion auf und übergibt ihr ein
Aktionsereignisobjekt.
Häufig verwenden Triggerfunktionen die Nachrichten-ID, die von diesem Ereignisobjekt bereitgestellt wird, um
den Nachrichtentext und andere Details mit dem Gmail-Dienst von Apps Script
abzurufen.
In den meisten Fällen müssen Sie
Gmail-Bereiche mit
dem vom Ereignisobjekt bereitgestellten Zugriffstoken und der
GmailApp.setCurrentMessageAccessToken(accessToken)
Funktion aktivieren, bevor Sie andere Gmail
-Dienst-Funktionen verwenden. Mit den folgenden Funktionen kann Ihre Triggerfunktion beispielsweise Nachrichteninhalte extrahieren:
// Activate temporary Gmail scopes, in this case to allow
// the add-on to read message metadata and content.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
// Read message metadata and content. This requires the Gmail scope
// https://www.googleapis.com/auth/gmail.addons.current.message.readonly.
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
var subject = message.getSubject();
var sender = message.getFrom();
var body = message.getPlainBody();
var messageDate = message.getDate();
// Setting the access token with a gmail.addons.current.message.readonly
// scope also allows read access to the other messages in the thread.
var thread = message.getThread();
var threadMessages = thread.getMessages();
// Using this link can avoid the need to copy message or thread content
var threadLink = thread.getPermalink();
Die Triggerfunktion kann dann auf diese Daten reagieren und die Informationen extrahieren, die für die Benutzeroberfläche benötigt werden. Ein Add-on, das beispielsweise Umsatzzahlen zusammenfasst, kann Umsatzdaten aus dem Nachrichtentext erfassen und sie zur Anzeige auf einer Karte organisieren.
Die Triggerfunktion muss ein Array mit erstellten
Card-Objekten erstellen und zurückgeben. Im folgenden Beispiel wird ein Add-on mit einer einzelnen Karte erstellt, auf der nur der Betreff und der Absender der Nachricht aufgeführt sind:
function onGmailMessageOpen(e) {
// Activate temporary Gmail scopes, in this case to allow
// message metadata to be read.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
var subject = message.getSubject();
var sender = message.getFrom();
// Create a card with a single card section and two widgets.
// Be sure to execute build() to finalize the card construction.
var exampleCard = CardService.newCardBuilder()
.setHeader(CardService.newCardHeader()
.setTitle('Example card'))
.addSection(CardService.newCardSection()
.addWidget(CardService.newDecoratedText()
.setTopLabel('Subject')
.setText(subject))
.addWidget(CardService.newDecoratedText()
.setTopLabel('From')
.setText(sender)))
.build(); // Don't forget to build the Card!
return [exampleCard];
}