In un componente aggiuntivo di Google Workspace puoi creare widget con azioni collegate. Puoi utilizzare un'azione per scrivere nuove bozze di email, facoltativamente compilandole informazioni inserite nell'interfaccia utente del componente aggiuntivo o informazioni di un messaggio aperto. Ad esempio, puoi avere un pulsante nella UI per i messaggi del componente aggiuntivo che crea una risposta al messaggio attualmente aperto precompilato con le informazioni dal componente aggiuntivo.
Quando viene attivata un'azione che crea messaggi, Gmail esegue un callback per creare e restituire la bozza. Gmail quindi mostra la bozza nel suo UI in una finestra di composizione di email standard, che l'utente può quindi modificare e inviare dell'oggetto o eliminare definitivamente una versione archiviata, in base alle necessità.
Configurare un'azione per creare la bozza di un messaggio
Per configurare un widget per l'avvio di un'azione di creazione di bozze quando viene selezionata, devi segui questi passaggi:
Assicurati che il file manifest include 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 è assolutamente necessario.
Creare un oggetto
Action
e associarla a una funzione di callback che definisci.Chiama il pulsante
setComposeAction()
del widget funzione di gestore widget, fornendoAction
e specificareComposeEmailType
Implementare la funzione di callback che esegue l'azione di creazione della bozza. Questo alla funzione viene assegnato un oggetto evento come argomento. La funzione di callback deve:
- Crea una
GmailDraft
. - Crea una
ComposeActionResponse
utilizzando l'oggettoComposeActionResponseBuilder
e ilGmailDraft
. - Restituisci il
ComposeActionResponse
costruito.
- Crea una
Puoi precompilare GmailDraft
che crei nella funzione di callback
destinatari, un oggetto, il corpo di un messaggio e gli allegati. Per compilare la bozza:
i dati possono provenire da qualsiasi origine, ma in genere derivano da informazioni
fornite al componente aggiuntivo stesso, alle informazioni nel messaggio aperto o
raccolte da un servizio di terze parti. La
oggetto evento
passato alla funzione di callback contiene l'ID messaggio aperto e altro componente aggiuntivo
informazioni che puoi utilizzare per precompilare la bozza.
Puoi creare la bozza come nuovo messaggio autonomo o come risposta
un messaggio esistente. Ciò è controllato
ComposeEmailType
enum assegnato
setComposeAction()
.
Puoi creare bozze di risposta come risposte singole o "reply-all" messaggi.
Bozze autonome
Una bozza autonoma avvia un nuovo thread e non è una risposta a messaggi esistenti . Puoi creare una bozza autonoma con uno dei seguenti elementi: Funzioni del servizio Gmail:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Bozze di risposta
La bozza di una risposta fa parte di un thread di messaggi esistente. Le bozze delle risposte sono risposte singole che vengono inviate soltanto al mittente di un messaggio o "rispondi a tutti" bozze che vengono inviate a tutti coloro che hanno ricevuto il messaggio. Puoi creare un bozza di risposta con uno di questi servizi 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 risposta in 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();
}