Redacción de mensajes en borrador

En un complemento de Google Workspace, puedes crear widgets que tengan acciones vinculadas. Puedes usar una acción para redactar nuevos borradores de correo electrónico y, de manera opcional, completarlos con la información ingresada en la IU del complemento o la información de un mensaje abierto. Por ejemplo, puedes tener un botón en la IU de mensajes del complemento que cree una respuesta al mensaje abierto actualmente propagado con información del complemento.

Cuando se activa una acción para compilar mensajes, Gmail ejecuta una función de devolución de llamada para compilar y mostrar el borrador. Luego, Gmail muestra ese borrador en su IU en una ventana de redacción de correo electrónico estándar, que el usuario puede editar y enviar según sea necesario.

Configura una acción para compilar un mensaje en borrador

Si deseas configurar un widget para que inicie una acción de compilación de borradores cuando se selecciona, debes hacer lo siguiente:

  1. Asegúrate de que el manifiesto incluye el permiso action.compose:

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

    En su lugar, puedes usar un alcance más permisivo, pero solo debes hacerlo si ese alcance es absolutamente necesario.

  2. Crea un objeto Action y asócialo con una función de devolución de llamada que definas.

  3. Llama a la función del controlador de widgets setComposeAction() del widget. Para ello, proporciona el objeto Action y especifica el ComposeEmailType.

  4. Implementa la función de devolución de llamada que ejecuta la acción de compilación de borradores. Esta función recibe un objeto de evento como argumento. La función de devolución de llamada debe hacer lo siguiente:

    1. Crea un objeto GmailDraft.
    2. Compila un objeto ComposeActionResponse con la clase ComposeActionResponseBuilder y el objeto GmailDraft.
    3. Muestra la compilación ComposeActionResponse.

Puedes precompletar el GmailDraft que creaste en la función de devolución de llamada con los destinatarios, un asunto, el cuerpo del mensaje y los archivos adjuntos. Para completar el borrador, los datos pueden provenir de cualquier fuente, pero, por lo general, provienen de la información proporcionada al complemento, la información del mensaje abierto o la información recopilada de un servicio de terceros. El objeto de evento pasado a la función de devolución de llamada contiene el ID del mensaje abierto y otra información de complemento que puedes usar para completar el borrador.

Puedes crear el borrador como un mensaje independiente nuevo o la respuesta a un mensaje existente. Esto se controla mediante la enumeración ComposeEmailType que se le da a setComposeAction(). Puedes crear borradores de respuestas como respuestas únicas o mensajes de "responder a todos".

Borradores independientes

Un borrador independiente inicia una conversación nueva y no responde a ningún mensaje existente. Puedes crear un borrador independiente con una de las siguientes funciones del servicio de Gmail:

Borradores de respuestas

Un borrador de respuesta forma parte de una conversación de mensajes existente. Los borradores de respuestas son respuestas individuales que solo se envían al remitente de un mensaje o borradores de "responder a todos" que se envían a todas las personas que recibieron ese mensaje. Puedes crear un borrador de respuesta con una de estas funciones del servicio de Gmail:

Ejemplo

En el siguiente fragmento de código, se muestra cómo asignar una acción que crea un borrador de respuesta a un botón.

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