Nachrichtenentwürfe verfassen

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

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

Aktion zum Erstellen eines Nachrichtenentwurfs konfigurieren

Gehen Sie so vor, um ein Widget so zu konfigurieren, dass ein Gebäudeentwurf gestartet wird, wenn dieses ausgewählt ist:

  1. Das Manifest muss den Bereich action.compose enthalten:

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

    Sie können stattdessen auch einen eher großzügigen 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 von Ihnen definierten Callback-Funktion.

  3. Rufen Sie die Widget-Handler-Funktion setComposeAction() des Widgets auf. Geben Sie dabei das Objekt Action und die ComposeEmailType an.

  4. Implementieren Sie die Callback-Funktion, die die Entwurfs-Erstellungsaktion 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. Geben Sie den erstellten ComposeActionResponse zurück.

Sie können in die GmailDraft, die Sie in der Callback-Funktion erstellen, Empfänger, einen Betreff, einen Nachrichtentext und Anhänge vorab ausfüllen. Zum Ausfüllen des Entwurfs können Daten aus einer beliebigen Quelle stammen. In der Regel stammen sie jedoch aus Informationen, die dem Add-on selbst bereitgestellt wurden, aus Informationen in der offenen Nachricht oder aus Informationen, die von einem Drittanbieterdienst erfasst wurden. Das an die Callback-Funktion übergebene Ereignisobjekt 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 das ComposeEmailType-Enum gesteuert, das an setComposeAction() übergeben wird. Sie können Antwortentwürfe mit einer einzelnen Antwort oder als Antwort an alle Nutzer 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-Dienstfunktionen erstellen:

Antwortentwürfe

Ein Antwortentwurf ist Teil eines vorhandenen Nachrichten-Threads. 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, mit der ein Antwortentwurf erstellt wird.

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