Verfassen von Nachrichtenentwürfen

In einem Google Workspace-Add-on können Sie Widgets mit verknüpften Aktionen erstellen. Sie können eine Aktion verwenden, um neue E‑Mail-Entwürfe zu erstellen. Optional können Sie sie mit Informationen ausfüllen, die in die Add‑on-Benutzeroberfläche eingegeben wurden, oder mit Informationen aus einer geöffneten Nachricht. Sie können beispielsweise eine Schaltfläche in der Nachrichten-Benutzeroberfläche des 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, mit der Nachrichten erstellt werden, führt Gmail eine Callback-Funktion aus, um den Entwurf zu erstellen und zurückzugeben. Gmail zeigt diesen Entwurf dann in der Benutzeroberfläche in einem Standardfenster zum Verfassen von E‑Mails an. Der Nutzer kann ihn dann nach Bedarf bearbeiten und senden.

Aktion zum Erstellen eines Nachrichtenentwurfs 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 weniger restriktiven Bereich verwenden, sollten dies jedoch 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 des Widgets setComposeAction() auf, indem Sie das Objekt Action übergeben und ComposeEmailType angeben.

  4. Implementieren Sie die Callback-Funktion, die die Aktion zum Erstellen des Entwurfs ausführt. Dieser Funktion wird ein Ereignisobjekt als Argument übergeben. Die Callback-Funktion muss Folgendes tun:

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

Sie können die GmailDraft, die Sie in der Rückruffunktion erstellen, mit Empfängern, einem Betreff, einem Nachrichtentext und Anhängen vorab ausfüllen. Zum Ausfüllen des Entwurfs können Daten aus beliebigen Quellen stammen. In der Regel werden sie jedoch aus Informationen abgeleitet, die dem Add-on selbst zur Verfügung gestellt werden, aus Informationen in der offenen Nachricht oder aus Informationen, die von einem Drittanbieterdienst erfasst werden. 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 vorab ausfü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 Enumeration ComposeEmailType gesteuert, die an setComposeAction() übergeben wird. Sie können Antwortentwürfe als einzelne Antworten oder als „Allen antworten“-Nachrichten erstellen.

Eigenständige Vorschläge

Mit einem eigenständigen Entwurf wird ein neuer Thread gestartet und es wird nicht auf eine vorhandene Nachricht geantwortet. Sie können einen eigenständigen Entwurf mit einer der folgenden Gmail-Dienstfunktionen erstellen:

Antwortentwürfe

Ein Antwortentwurf ist Teil eines vorhandenen Nachrichtenverlaufs. Antwortentwürfe sind entweder einzelne Antworten, die nur an den Absender einer Nachricht gesendet werden, oder „Allen antworten“-Entwürfe, die an alle Empfänger der Nachricht gesendet werden. Sie können einen Antwortentwurf mit einer der folgenden Gmail-Dienstfunktionen erstellen:

Beispiel

Das folgende Code-Snippet zeigt, wie einer Schaltfläche eine Aktion zugewiesen wird, die einen Antwortentwurf 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 specified
    // above.
    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
  }