Em um complemento do Google Workspace, é possível criar widgets com ações vinculadas. Você pode usar uma ação para escrever novos rascunhos de e-mail, preenchendo-os opcionalmente usando informações inseridas na IU de complementos ou informações de uma mensagem aberta. Por exemplo, você pode ter um botão na IU de mensagens do complemento que cria uma resposta à mensagem aberta pré-preenchida com informações do complemento.
Quando uma ação que cria mensagens é acionada, o Gmail executa uma função de callback para criar e retornar o rascunho. Em seguida, o Gmail exibe esse rascunho na IU em uma janela padrão para escrever e-mails, que o usuário pode editar e enviar conforme necessário.
Como configurar uma ação para criar uma mensagem de rascunho
Para configurar um widget para iniciar uma ação de criação de rascunho quando selecionado, faça o seguinte:
Verifique se o manifesto inclui o escopo
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
É possível usar um escopo mais permissivo, mas só faça isso se ele for absolutamente necessário.
Crie um objeto
Action
e associe-o a uma função de callback definida por você.Chame a função de gerenciador de widgets
setComposeAction()
, fornecendo o objetoAction
e especificando aComposeEmailType
.Implemente a função de callback que executa a ação de criação de rascunho. Essa função recebe um objeto de evento como argumento. A função de callback precisa fazer o seguinte:
- Crie um objeto
GmailDraft
. - Crie um objeto
ComposeActionResponse
usando a classeComposeActionResponseBuilder
e o objetoGmailDraft
. - Retorna o
ComposeActionResponse
criado.
- Crie um objeto
É possível preencher o GmailDraft
criado na função de callback com destinatários, assunto, corpo da mensagem e anexos. Para preencher o rascunho, os dados podem vir de qualquer fonte, mas normalmente derivam das informações fornecidas ao complemento, das informações na mensagem aberta ou de informações coletadas de um serviço de terceiros. O
objeto de evento
transmitido à função de callback contém o ID da mensagem aberta e outras informações
de complemento que podem ser usadas para preencher o rascunho.
É possível criar o rascunho como uma nova mensagem independente ou uma resposta a uma mensagem existente. Isso é controlado pelo enum ComposeEmailType
dado ao setComposeAction()
.
Você pode criar rascunhos de respostas como mensagens de resposta única ou "responder para todos".
Rascunhos independentes
Um rascunho autônomo inicia uma nova conversa e não responde a nenhuma mensagem existente. Você pode criar um rascunho independente com uma das seguintes funções do serviço do Gmail:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Rascunhos de respostas
Um rascunho de resposta faz parte de uma conversa atual. Os rascunhos de resposta são respostas únicas que só são enviadas ao remetente de uma mensagem ou rascunhos de resposta a todos que são enviados a todos que receberam essa mensagem. Você pode criar um rascunho de resposta com uma destas funções do serviço do 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)
Exemplo
O snippet de código a seguir mostra como atribuir uma ação que cria um rascunho de resposta a um botão.
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();
}