Nachrichtenentwürfe verfassen

In einem Add-on können Sie Widgets mit verknüpften Aktionen erstellen. Mit einer Aktion können Sie neue E‑Mail-Entwürfe erstellen und sie optional mit Informationen füllen, die in die Add-on-UI eingegeben wurden, oder mit Informationen aus einer geöffneten Nachricht. Sie können beispielsweise eine Schaltfläche in der Nachrichten-UI Ihres Add-ons einfügen, mit der eine Antwort auf die aktuell geöffnete Nachricht erstellt wird, die mit Informationen aus dem Add-on vorausgefüllt ist.

Wenn eine Aktion ausgelöst wird, die Nachrichten erstellt, führt Gmail eine Callback-Funktion aus, um den Entwurf zu erstellen und zurückzugeben. Gmail zeigt diesen Entwurf dann in der UI in einem Standardfenster zum Verfassen von E‑Mails an, das der Nutzer nach Bedarf bearbeiten und senden kann.

Aktion zum Erstellen eines Entwurfs konfigurieren

Wenn Sie ein Widget so konfigurieren möchten, dass beim Auswählen eine Aktion zum Erstellen eines Entwurfs gestartet wird, müssen Sie Folgendes tun:

  1. Achten Sie darauf, dass Ihr Manifest den action.compose Bereich enthält:

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

    Sie können stattdessen einen permissiveren Bereich verwenden, sollten dies aber nur tun, wenn dieser Bereich unbedingt erforderlich ist.

  2. Erstellen Sie ein Action Objekt und verknüpfen Sie es mit einer Callback-Funktion die Sie definieren.

  3. Rufen Sie die Widget-Handler-Funktion setComposeAction des Widgets auf, geben Sie das Action Objekt an und legen Sie den ComposeEmailTypefest.

  4. Implementieren Sie die Callback-Funktion, die die Aktion zum Erstellen des Entwurfs ausführt. Diese Funktion erhält ein Ereignisobjekt als Argument. Die Callback-Funktion muss Folgendes tun:

    1. Erstellen Sie ein GmailDraft Objekt.
    2. Erstellen Sie ein ComposeActionResponse Objekt mit der ComposeActionResponseBuilder Klasse und dem GmailDraft Objekt.
    3. Geben Sie das erstellte ComposeActionResponse-Objekt zurück.

Sie können den GmailDraft in der Callback-Funktion erstellten mit Empfängern, einem Betreff, einem Nachrichtentext und Anhängen vorausfüllen. Die Daten können aus einer beliebigen Quelle stammen, in der Regel aber aus Informationen, die dem Add-on selbst zur Verfügung gestellt werden, aus Informationen in der geöffneten Nachricht oder aus Informationen, die von einem Drittanbieterdienst erfasst wurden. Das Ereignisobjekt, das an die Callback- Funktion übergeben wird, enthält die ID der geöffneten Nachricht und andere Add-on- Informationen, mit denen Sie den Entwurf vorausfüllen können.

Sie können den Entwurf als neue eigenständige Nachricht oder als Antwort auf eine vorhandene Nachricht erstellen. Dies wird durch die ComposeEmailType -Enum gesteuert, die an die setComposeAction übergeben wird. Sie können Entwürfe für Antworten als einzelne Antworten oder als „Allen antworten“-Nachrichten erstellen.

Eigenständige Entwürfe

Ein eigenständiger Entwurf startet einen neuen Thread und ist keine Antwort auf eine vorhandene Nachricht. Sie können einen eigenständigen Entwurf mit einer der folgenden Gmail-Dienst Funktionen erstellen:

Entwürfe für Antworten

Ein Entwurf für eine Antwort ist Teil eines vorhandenen Nachrichtenthreads. Entwürfe für Antworten sind entweder einzelne Antworten, die nur an den Absender einer Nachricht gesendet werden, oder „Allen antworten“-Entwürfe, die an alle Empfänger dieser Nachricht gesendet werden. Sie können einen Entwurf für eine Antwort mit einer der folgenden Gmail-Dienst funktionen erstellen:

Beispiel

Das folgende Code-Snippet zeigt, wie Sie einer Schaltfläche eine Aktion zuweisen, die einen Entwurf für eine Antwort erstellt.

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