Em um complemento, é possível criar widgets com ações vinculadas . Você pode usar uma ação para compor novos rascunhos de e-mail, preenchendo-os opcionalmente com informações inseridas na interface do complemento ou informações de uma mensagem aberta. Por exemplo, você pode ter um botão na interface de mensagens do complemento que cria uma resposta à mensagem aberta no momento, 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 mostra esse rascunho na interface em uma janela de texto de e-mail padrão, que o usuário pode editar e enviar conforme necessário.
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:
Confira se o manifesto inclui o
action.composeescopo:https://www.googleapis.com/auth/gmail.addons.current.action.composeVocê pode usar um escopo mais permissivo, mas só faça isso se ele for absolutamente necessário.
Crie um objeto
Actione associe-o a uma função de callback definida por você.Chame a função do gerenciador de widgets
setComposeAction, fornecendo oActionobjeto e especificando oComposeEmailType.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
GmailDraftobjeto. - Crie um
ComposeActionResponseobjeto usando a classeComposeActionResponseBuildere o objetoGmailDraft. - Retorne o
ComposeActionResponsecriado.
- Crie um
É possível pré-preencher o GmailDraft
criado na função de callback com
destinatários, um assunto, um corpo da mensagem e anexos. Para preencher o rascunho, os dados podem vir de qualquer fonte, mas normalmente são derivados de informações fornecidas ao próprio complemento, informações na mensagem aberta ou informações coletadas de um serviço de terceiros. O
objeto de evento transmitido para a função de callback
contém o ID da mensagem aberta e outras informações do complemento
que podem ser usadas para pré-preencher o rascunho.
É possível criar o rascunho como uma nova mensagem independente ou uma resposta a uma mensagem existente. Isso é controlado pela
ComposeEmailType
enumeração fornecida ao
setComposeAction.
É possível criar rascunhos de resposta como respostas únicas ou mensagens "responder a todos".
Rascunhos independentes
Um rascunho independente inicia uma nova conversa e não é uma resposta a nenhuma mensagem existente. É possível criar um rascunho independente com uma das seguintes funções de serviço do Gmail:
GmailApp.createDraft(recipient, subject, body)GmailApp.createDraft(recipient, subject, body, options)
Rascunhos de resposta
Um rascunho de resposta faz parte de uma conversa de mensagem existente. Os rascunhos de resposta são respostas únicas que só são enviadas ao remetente de uma mensagem ou rascunhos "responder a todos" que são enviados a todos que receberam essa mensagem. É possível criar um rascunho de resposta com uma destas funções de 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 previously
// specified.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}