Dans un module complémentaire, vous pouvez créer des widgets comportant des actions associées. Vous pouvez utiliser une action pour rédiger de nouveaux brouillons d'e-mails, éventuellement en les saisissant à l'aide des informations saisies dans l'interface utilisateur du module complémentaire ou d'informations provenant d'un message ouvert. Par exemple, l'interface de messagerie de votre module complémentaire comporte un bouton qui permet de créer une réponse au message actuellement ouvert et préremplie avec les informations du module complémentaire.
Lorsqu'une action de compilation des messages est déclenchée, Gmail exécute une fonction de rappel pour créer et renvoyer le brouillon. Gmail affiche ensuite ce brouillon dans son interface utilisateur dans une fenêtre de rédaction d'e-mail standard, que l'utilisateur peut ensuite modifier et envoyer selon ses besoins.
Configurer une action pour créer un brouillon de message
Pour configurer un widget afin de lancer une action de création de brouillon lorsqu'il est sélectionné, procédez comme suit:
Assurez-vous que votre fichier manifeste inclut le champ d'application
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Vous pouvez utiliser un champ d'application plus permissif à la place, mais uniquement si ce champ d'application est absolument nécessaire.
Créez un objet
Action
et associez-le à une fonction de rappel que vous définissez.Appelez la fonction de gestion des widgets
setComposeAction()
du widget, en lui fournissant l'objetAction
et en spécifiantComposeEmailType
.Implémentez la fonction de rappel qui exécute l'action de création de brouillon. Un objet d'événement est attribué à cette fonction en tant qu'argument. La fonction de rappel doit:
- Créez un objet
GmailDraft
. - Créez un objet
ComposeActionResponse
à l'aide de la classeComposeActionResponseBuilder
et de l'objetGmailDraft
. - Renvoyez l'
ComposeActionResponse
compilé.
- Créez un objet
Vous pouvez préremplir la classe GmailDraft
que vous avez créée dans la fonction de rappel avec des destinataires, un objet, un corps de message et des pièces jointes. Pour remplir le brouillon, les données peuvent provenir de n'importe quelle source, mais elles proviennent généralement d'informations fournies par le module complémentaire lui-même, d'informations du message ouvert ou d'informations recueillies auprès d'un service tiers. L'objet d'événement transmis à la fonction de rappel contient l'ID de message ouvert ainsi que d'autres informations complémentaires que vous pouvez utiliser pour préremplir le brouillon.
Vous pouvez créer le brouillon en tant que nouveau message autonome ou en réponse à un message existant. Ce paramètre est contrôlé par l'énumération ComposeEmailType
attribuée à la méthode setComposeAction()
.
Vous pouvez créer des brouillons de réponse sous la forme de messages de réponse unique ou de réponse à tous les messages.
Brouillons indépendants
Un brouillon autonome démarre un nouveau fil de discussion et ne constitue pas une réponse à un message existant. Vous pouvez créer un brouillon autonome avec l'une des fonctions de service Gmail suivantes:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Brouillons de réponse
Un brouillon de réponse fait partie d'un fil de discussion existant. Les brouillons de réponse sont soit des réponses uniques qui ne sont envoyées qu'à l'expéditeur d'un message, soit des brouillons "Répondre à tous" qui sont envoyés à tous les destinataires de ce message. Vous pouvez créer un brouillon de réponse à l'aide de l'une des fonctions de service Gmail suivantes:
GmailMessage.createDraftReply(body)
GmailMessage.createDraftReply(body, options)
GmailMessage.createDraftReplyAll(body)
GmailMessage.createDraftReplyAll(body, options)
GmailThread.createDraftReply(body)
GmailThread.createDraftReply(body, options)
GmailThread.createDraftReplyAll(body)
GmailThread.createDraftReplyAll(body, options)
Exemple
L'extrait de code suivant montre comment attribuer une action qui génère un brouillon de réponse à un bouton.
var composeAction = CardService.newAction()
.setFunctionName('createReplyDraft');
var composeButton = CardService.newTextButton()
.setText('Compose Reply')
.setComposeAction(
composeAction,
CardService.ComposedEmailType.REPLY_AS_DRAFT);
// ...
/**
* Creates a draft email (with an attachment and inline image)
* as a reply to an existing message.
* @param {Object} e An event object passed by the action.
* @return {ComposeActionResponse}
*/
function createReplyDraft(e) {
// Activate temporary Gmail scopes, in this case to allow
// a reply to be drafted.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
// Creates a draft reply.
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
var draft = message.createDraftReply('',
{
htmlBody: "Kitten! <img src='cid:kitten'/>",
attachments: [
UrlFetchApp.fetch('https://example.com/images/myDog.jpg')
.getBlob()
],
inlineImages: {
"kitten": UrlFetchApp.fetch('https://example.com/images/myKitten.jpg')
.getBlob()
}
}
);
// Return a built draft response. This causes Gmail to present a
// compose window to the user, pre-filled with the content specified
// above.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}