Escrever mensagens de rascunho

!

Em um complemento do Google Workspace, é possível criar widgets que tenham ações vinculadas. Você pode usar uma ação para escrever novos rascunhos de e-mail, opcionalmente preenchendo-os usando informações inseridas na IU do complemento ou informações de uma mensagem aberta. Por exemplo, você pode ter um botão na IU de mensagem do complemento que cria uma resposta à mensagem aberta pré-preenchida com as 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. O Gmail mostra 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:

  1. Verifique se o manifesto inclui o escopo action.compose:

    https://www.googleapis.com/auth/gmail.addons.current.action.compose

    Você pode usar um escopo mais permissivo, mas só faça isso se esse escopo for absolutamente necessário.

  2. Crie um objeto Action e associe-o a uma função de callback definida.

  3. Chame a função do gerenciador de widgets setComposeAction() do widget, fornecendo o objeto Action e especificando o ComposeEmailType.

  4. Implemente a função de callback que executa a ação de criação do rascunho. Essa função recebe um objeto de evento como argumento. A função de callback precisa fazer o seguinte:

    1. Crie um objeto GmailDraft.
    2. Crie um objeto ComposeActionResponse usando a classe ComposeActionResponseBuilder e o objeto GmailDraft.
    3. Retorne o ComposeActionResponse criado.

É possível preencher automaticamente o GmailDraft criado na função de callback com destinatários, um assunto, um corpo de 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, da mensagem aberta ou 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 preencher o rascunho automaticamente.

É possível criar o rascunho como uma nova mensagem independente ou uma resposta a uma mensagem existente. Isso é controlado pelo enum ComposeEmailType fornecido ao setComposeAction(). Você pode criar rascunhos de resposta como respostas únicas ou mensagens do tipo "Responder a todos".

Rascunhos independentes

Um rascunho independente inicia uma nova linha de execução e não é uma resposta a nenhuma mensagem existente. É possível criar um rascunho independente com uma das seguintes funções do serviço do Gmail:

Responder rascunhos

Um rascunho de resposta faz parte de uma conversa existente. Os rascunhos de resposta são respostas únicas enviadas apenas ao remetente de uma mensagem ou rascunhos do tipo "Responder a todos" que são enviados para todos que receberam a mensagem. É possível criar um rascunho de resposta com uma destas funções do serviço do Gmail:

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();
  }