In un componente aggiuntivo puoi creare widget con azioni collegate. Puoi utilizzare un'azione per comporre nuove bozze di email, compilando facoltativamente le informazioni inserite nell'interfaccia utente del componente aggiuntivo o le informazioni 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, precompilata con le 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 quindi la bozza nella sua UI in una finestra di composizione email standard, che l'utente può modificare e inviare in base alle esigenze.
Configurare un'azione per creare una bozza di messaggio
Per configurare un widget in modo che avvii un'azione di creazione di bozze quando viene selezionato, devi:
Assicurati che il manifest includa l'
action.composeambito:https://www.googleapis.com/auth/gmail.addons.current.action.composePuoi utilizzare un ambito più permissivo, ma solo se è assolutamente necessario.
Crea un
Actionoggetto e associa una funzione di callback che definisci.Chiama la funzione di gestione dei widget
setComposeActiondel widget, fornendo l'oggettoActione specificandoComposeEmailType.Implementa la funzione di callback che esegue l'azione di creazione della bozza. A questa funzione viene fornito un oggetto evento come argomento. La funzione di callback deve:
- Crea un
GmailDraftoggetto. - Crea un
ComposeActionResponseoggetto utilizzando laComposeActionResponseBuilderclasse e l'GmailDraftoggetto. - Restituisci l'oggetto creato
ComposeActionResponse.
- Crea un
Puoi precompilare l'GmailDraft
creato nella funzione di callback con
destinatari, un oggetto, un corpo del messaggio e allegati. Per compilare la bozza, i dati possono provenire da qualsiasi origine, ma in genere derivano dalle informazioni fornite al 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 del messaggio aperto e altre informazioni del componente aggiuntivo
che puoi utilizzare per precompilare la bozza.
Puoi creare la bozza come nuovo messaggio autonomo o come risposta a un messaggio esistente. Questo è controllato dall'
ComposeEmailType
enumerazione fornita a
setComposeAction.
Puoi creare bozze di risposte come singole risposte o messaggi "Rispondi a tutti".
Bozze autonome
Una bozza autonoma avvia una nuova discussione e non è una risposta a un messaggio esistente. Puoi creare una bozza autonoma con una delle seguenti funzioni del servizio Gmail:
GmailApp.createDraft(recipient, subject, body)GmailApp.createDraft(recipient, subject, body, options)
Bozze di risposte
Una bozza di risposta fa parte di una discussione di messaggi esistente. Le bozze di risposte sono risposte singole che vengono inviate solo al mittente di un messaggio o bozze "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 previously
// specified.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}