In un componente aggiuntivo di Google Workspace puoi creare widget che hanno azioni collegate. Puoi utilizzare un'azione per comporre nuove bozze di email, facoltativamente compilandole utilizzando le informazioni inserite nell'interfaccia utente del componente aggiuntivo o quelle di un messaggio aperto. Ad esempio, puoi avere un pulsante nell'interfaccia utente dei messaggi del componente aggiuntivo che crea una risposta al messaggio attualmente aperto precompilato con informazioni del componente aggiuntivo.
Quando viene attivata un'azione che crea messaggi, Gmail esegue una funzione di callback per creare e restituire la bozza. Gmail visualizza la bozza nell'interfaccia utente in una finestra di composizione di email standard, che l'utente può modificare e inviare in base alle esigenze.
Configurazione di un'azione per creare una bozza di messaggio
Per configurare un widget per avviare un'azione di creazione della bozza quando viene selezionato, procedi nel seguente modo:
Assicurati che il manifest includa l'ambito
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Puoi invece utilizzare un ambito più permissivo, ma dovresti farlo solo se questo ambito è assolutamente necessario.
Crea un oggetto
Action
e associalo a una funzione di callback definita da te.Richiama la funzione gestore widget
setComposeAction()
del widget, fornendo l'oggettoAction
e specificandoComposeEmailType
.Implementa la funzione di callback che esegue l'azione di creazione della bozza. A questa funzione viene assegnato un oggetto evento come argomento. La funzione di callback deve:
- Crea un oggetto
GmailDraft
. - Crea un oggetto
ComposeActionResponse
utilizzando la classeComposeActionResponseBuilder
e l'oggettoGmailDraft
. - Restituire la
ComposeActionResponse
creata.
- Crea un oggetto
Puoi precompilare il GmailDraft
creato nella funzione di callback con i destinatari, un oggetto, il corpo del messaggio e gli allegati. Per compilare la bozza, i dati possono provenire da qualsiasi origine, ma in genere derivano dalle informazioni fornite nel componente aggiuntivo stesso, dalle informazioni nel messaggio aperto o dalle informazioni raccolte da un servizio di terze parti. L'oggetto evento passato alla funzione di callback contiene l'ID messaggio aperto e altre informazioni sul componente aggiuntivo che puoi utilizzare per precompilare la bozza.
Puoi creare la bozza come nuovo messaggio autonomo o come risposta a un messaggio esistente. Ciò viene controllato dall'enumerazione ComposeEmailType
assegnata a setComposeAction()
.
Puoi creare bozze delle risposte come risposte singole o messaggi "rispondi a tutti".
Bozze indipendenti
Una bozza autonoma avvia un nuovo thread e non è una risposta ad alcun messaggio esistente. Puoi creare una bozza a sé stante con una delle seguenti funzioni del servizio Gmail:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Bozze delle risposte
La bozza di una risposta fa parte di un thread di messaggi esistente. Le bozze delle risposte sono risposte singole che vengono inviate solo al mittente di un messaggio o bozze di tipo "Rispondi a tutti" che vengono inviate a tutti coloro che hanno ricevuto il messaggio. Puoi creare una bozza di risposta con una di queste funzioni del servizio Gmail:
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)
Esempio
Il seguente snippet di codice mostra come assegnare un'azione che crea una bozza di risposta a un pulsante.
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();
}