Étendre l'interface utilisateur des messages

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:

  1. 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 {}.
  2. 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.
  3. 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];
  }