Составление черновиков сообщений

В надстройке Google Workspace вы можете создавать виджеты , связанные действиями . Вы можете использовать действие для создания новых черновиков электронных писем, при необходимости заполняя их информацией, введенной в пользовательский интерфейс надстройки, или информацией из открытого сообщения. Например, вы можете иметь кнопку в пользовательском интерфейсе сообщений вашей надстройки , которая создает ответ на открытое в данный момент сообщение, предварительно заполненное информацией из надстройки.

Когда запускается действие по созданию сообщений, Gmail выполняет функцию обратного вызова для создания и возврата черновика. Затем Gmail отображает этот черновик в своем пользовательском интерфейсе в стандартном окне создания электронного письма, которое пользователь затем может редактировать и отправлять по мере необходимости.

Настройка действия для создания черновика сообщения

Чтобы настроить виджет для запуска действия по созданию черновика при его выборе, необходимо сделать следующее:

  1. Убедитесь, что ваш манифест включает область действия action.compose :

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

    Вместо этого вы можете использовать более разрешительную область, но следует делать это только в том случае, если эта область абсолютно необходима.

  2. Создайте объект Action и свяжите его с определяемой вами функцией обратного вызова .

  3. Вызовите функцию обработчика виджета setComposeAction() , предоставив ему объект Action и указав ComposeEmailType .

  4. Реализуйте функцию обратного вызова, которая выполняет действие по созданию черновика. Этой функции в качестве аргумента передается объект события . Функция обратного вызова должна делать следующее:

    1. Создайте объект GmailDraft .
    2. Создайте объект ComposeActionResponse используя класс ComposeActionResponseBuilder и объект GmailDraft .
    3. Верните встроенный ComposeActionResponse .

Вы можете предварительно заполнить GmailDraft , созданный в функции обратного вызова, получателями, темой, телом сообщения и вложениями. Данные для заполнения черновика могут поступать из любого источника, но обычно они извлекаются из информации, предоставленной самой надстройке, информации в открытом сообщении или информации, собранной из стороннего сервиса. Объект события, передаваемый функции обратного вызова, содержит идентификатор открытого сообщения и другую дополнительную информацию, которую вы можете использовать для предварительного заполнения черновика.

Вы можете создать черновик как новое отдельное сообщение или ответ на существующее сообщение. Это контролируется перечислением ComposeEmailType , данным setComposeAction() . Вы можете создавать черновики ответов в виде отдельных ответов или сообщений с возможностью ответа всем.

Отдельные черновики

Отдельный черновик запускает новую цепочку сообщений и не является ответом на существующее сообщение. Вы можете создать отдельный черновик с помощью одной из следующих функций службы Gmail :

Черновики ответов

Черновик ответа является частью существующей ветки сообщений. Черновики ответов — это либо отдельные ответы, которые отправляются только отправителю сообщения, либо черновики «ответить всем», которые отправляются всем, кто получил это сообщение. Вы можете создать черновик ответа с помощью одной из следующих функций службы Gmail :

Пример

В следующем фрагменте кода показано, как назначить кнопке действие, создающее черновик ответа.

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