Tworzenie wersji roboczych wiadomości

W dodatku możesz tworzyć widżety z połączonymi działaniami. Za pomocą działania możesz tworzyć nowe wersje robocze e-maili, opcjonalnie wypełniając je informacjami wprowadzonymi w interfejsie dodatku lub informacjami z otwartej wiadomości. Możesz na przykład umieścić w interfejsie wiadomości dodatku przycisk, który utworzy odpowiedź na aktualnie otwartą wiadomość, wstępnie wypełnioną informacjami z dodatku.

Gdy zostanie wywołane działanie, które tworzy wiadomości, Gmail wykonuje funkcję wywołania zwrotnego, aby utworzyć i zwrócić wersję roboczą. Gmail wyświetla tę wersję roboczą w swoim interfejsie w standardowym oknie tworzenia e-maili, które użytkownik może edytować i wysyłać w razie potrzeby.

Konfigurowanie działania, które tworzy wersję roboczą wiadomości

Aby skonfigurować widżet tak, aby po wybraniu rozpoczynał działanie tworzenia wersji roboczej, musisz wykonać te czynności:

  1. Upewnij się, że manifest zawiera zakres action.compose scope:

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

    Możesz użyć bardziej liberalnego zakresu, ale tylko wtedy, gdy jest to absolutnie konieczne.

  2. Utwórz obiekt Action i powiąż go z zdefiniowaną przez siebie funkcją wywołania zwrotnego.

  3. Wywołaj funkcję obsługi widżetu setComposeAction , podając jej obiekt Action i określając ComposeEmailType.

  4. Zaimplementuj funkcję wywołania zwrotnego, która wykonuje działanie tworzenia wersji roboczej. Ta funkcja otrzymuje jako argument obiekt zdarzenia. Funkcja wywołania zwrotnego musi wykonać te czynności:

    1. Utwórz GmailDraft obiekt.
    2. Utwórz obiekt ComposeActionResponse za pomocą klasy ComposeActionResponseBuilder i obiektu GmailDraft.
    3. Zwróć utworzony obiekt ComposeActionResponse.

W funkcji wywołania zwrotnego możesz wstępnie wypełnić utworzony obiekt GmailDraft odbiorcami, tematem, treścią wiadomości i załącznikami. Aby wypełnić wersję roboczą, dane mogą pochodzić z dowolnego źródła, ale zwykle są to informacje przekazane do samego dodatku, informacje w otwartej wiadomości lub informacje zebrane z usługi innej firmy. Obiekt zdarzenia przekazywany do funkcji wywołania zwrotnego zawiera identyfikator otwartej wiadomości i inne informacje o dodatku, których możesz użyć do wstępnego wypełnienia wersji roboczej.

Wersję roboczą możesz utworzyć jako nową samodzielną wiadomość lub jako odpowiedź na istniejącą wiadomość. Jest to kontrolowane przez wyliczenie ComposeEmailType przekazywane do setComposeAction. Wersje robocze odpowiedzi możesz tworzyć jako pojedyncze odpowiedzi lub wiadomości „Odpowiedz wszystkim”.

Samodzielne wersje robocze

Samodzielna wersja robocza rozpoczyna nowy wątek i nie jest odpowiedzią na żadną istniejącą wiadomość. Samodzielną wersję roboczą możesz utworzyć za pomocą jednej z tych funkcji usługi Gmail:

Wersje robocze odpowiedzi

Wersja robocza odpowiedzi jest częścią istniejącego wątku wiadomości. Wersje robocze odpowiedzi to pojedyncze odpowiedzi, które są wysyłane tylko do nadawcy wiadomości, lub wersje robocze „Odpowiedz wszystkim”, które są wysyłane do wszystkich odbiorców tej wiadomości. Wersję roboczą odpowiedzi możesz utworzyć za pomocą jednej z tych funkcji usługi Gmail:

Przykład

Poniższy fragment kodu pokazuje, jak przypisać do przycisku działanie, które tworzy wersję roboczą odpowiedzi.

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