Les modules complémentaires Google Workspace qui étendent Gmail une interface utilisateur lorsque l'utilisateur lit des messages. Cela permet Des modules complémentaires Google Workspace pour automatiser les tâches qui réagissent au contenu des messages (affichage, récupération ou envoi, par exemple) des informations supplémentaires concernant le message.
Accéder à l'interface utilisateur des messages du module complémentaire
Il existe deux façons d'afficher l'interface utilisateur des messages d'un module complémentaire. La première façon consiste à ouvrir un message s'affiche alors que le module complémentaire est déjà ouvert (par exemple, dans le page d'accueil du module complémentaire dans la fenêtre de la boîte de réception Gmail). La deuxième méthode consiste à lancer le module complémentaire lorsqu'un message est affiché.
Dans les deux cas, le module complémentaire exécute la requête Fonction de déclencheur contextuel, définie dans le fichier manifeste du module complémentaire. Le déclencheur s'exécute également si l'utilisateur passe à un autre message pendant que le module complémentaire est toujours ouvert. La fonction de déclencheur contextuel crée l'interface utilisateur du message pour que Gmail présente ensuite à l'utilisateur.
Créer un module complémentaire de messagerie
Vous pouvez ajouter une fonctionnalité de message à un module complémentaire en procédant comme suit:
- Ajouter les champs appropriés au projet de script du module complémentaire
manifest,
y compris les
champs d'application requis pour
de messagerie. N'oubliez pas d'ajouter un
champ du déclencheur conditionnel
au fichier manifeste, avec une
unconditional
de{}
. - Implémenter une fonction de déclencheur contextuel qui crée une UI de message Lorsque l'utilisateur sélectionne le module complémentaire dans un message.
- Implémenter les fonctions associées nécessaires pour répondre à l'UI de l'utilisateur des interactions.
Déclencheurs contextuels
Pour aider les utilisateurs à lire les messages, Les modules complémentaires Google Workspace peuvent définir un déclencheur contextuel dans leurs fichiers manifestes. Lorsque l'utilisateur ouvre un message Gmail (avec le module complémentaire ouvert) qui répond au déclencheur d'application* du déclencheur. Un déclencheur activé exécute une Fonction de déclencheur contextuel qui construit la et la renvoie pour que Gmail puisse l'afficher. À ce stade, l'utilisateur peut commencer à interagir avec elle.
Les déclencheurs contextuels sont définis dans le projet de votre module complémentaire
manifest.
La définition du déclencheur indique à Gmail quel déclencheur s'exécute
et conditions d'exploitation. Par exemple, cet extrait de fichier manifeste définit un déclencheur inconditionnel
qui appelle la fonction de déclencheur onGmailMessageOpen()
lorsqu'un message est ouvert:
{ ... "addOns": { "common": { ... }, "gmail": { "contextualTriggers": [ { "unconditional": {}, "onTriggerFunction": "onGmailMessageOpen" } ], ... }, ... } ... }
Fonction de déclencheur contextuel
Chaque déclencheur contextuel doit avoir une fonction de déclencheur correspondante
qui crée l'interface utilisateur de votre module complémentaire. Vous spécifiez cette fonction dans votre
onTriggerFunction
du fichier manifeste
. Vous allez implémenter cette fonction pour accepter
Objet événement d'action
et renvoie soit un seul
un objet Card
ou un tableau de
Objets Card
.
Lorsqu'un déclencheur contextuel se déclenche pour un message Gmail donné, il appelle et lui transmet une objet d'événement d'action. Les fonctions de déclenchement utilisent souvent l'ID de message fourni par cet objet d'événement pour récupérer le texte du message et d'autres détails à l'aide de la bibliothèque Service Gmail : Par exemple, votre déclencheur pourrait extraire le contenu du message à l'aide des fonctions suivantes:
// 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();
La fonction de déclenchement peut ensuite agir sur ces données, en extrayant les informations dont il a besoin pour l'interface. Par exemple, un module complémentaire récapitulant les ventes les chiffres peuvent collecter les chiffres de vente à partir du corps du message et les organiser pour à afficher sous forme de fiche.
La fonction de déclencheur doit créer et renvoyer un tableau des
Card
d'objets. Par exemple, l'exemple suivant permet de créer un module complémentaire avec une seule fiche qui
indique simplement l'objet et l'expéditeur du message:
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.newKeyValue()
.setTopLabel('Subject')
.setContent(subject))
.addWidget(CardService.newKeyValue()
.setTopLabel('From')
.setContent(sender)))
.build(); // Don't forget to build the Card!
return [exampleCard];
}