Em um complemento do Google Workspace, você pode criar widgets. que tenham vinculado ações. Você pode usar uma ação para escrever novos rascunhos de e-mail, opcionalmente preenchê-los usando informações inseridas na interface do complemento ou informações em uma mensagem aberta. Por exemplo, você pode ter um botão na sua interface de mensagem do complemento que cria uma resposta pré-preenchida para a mensagem aberta informações do complemento.
Quando uma ação que cria mensagens é acionada, o Gmail executa um callback para criar e retornar o rascunho. O Gmail exibe esse rascunho na interface em uma janela padrão de escrita de 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, você precisa faça o seguinte:
Verifique se o seu 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 esse escopo é absolutamente necessário.
Crie um objeto
Action
. e associá-lo a uma função de callback que você definir.Chame o método
setComposeAction()
do widget. função do gerenciador de widgets, fornecendo a ele oAction
e especificando oComposeEmailType
.Implemente a função de callback que executa a ação de criação de rascunho. Isso recebe um objeto de evento como argumento. A função de callback precisa fazer o seguinte:
- Criar um
GmailDraft
objeto. - Criar um
ComposeActionResponse
objeto usando o métodoComposeActionResponseBuilder
classe e a classeGmailDraft
objeto. - Retorne o
ComposeActionResponse
criado.
- Criar um
É possível preencher automaticamente o GmailDraft
que você cria 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 de informações
fornecidas ao complemento, informações na mensagem aberta ou
informações coletadas de um serviço de terceiros. A
objeto de evento
passados para a função de callback contém o ID da mensagem aberta e outros complementos
informações que podem ser usadas para preencher automaticamente o rascunho.
É possível criar o rascunho como uma nova mensagem independente ou uma resposta a
uma mensagem existente. Isso é controlado pelo
ComposeEmailType
um tipo enumerado fornecido ao
setComposeAction()
Você pode criar rascunhos de resposta como respostas únicas ou "responder para todos" mensagens.
Rascunhos independentes
Um rascunho independente inicia uma nova conversa e não é uma resposta a nenhuma mensagem. É possível criar um rascunho independente com uma das seguintes opções Funções do 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. Os rascunhos de resposta respostas únicas que são enviadas somente para o remetente de uma mensagem ou "responder para todos" os rascunhos enviados a todos que receberam a mensagem. É possível criar um rascunho de resposta com um destes serviço do Gmail funções:
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 uma resposta em 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();
}