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 sie optional mit Informationen aus der Benutzeroberfläche des Add-ons oder aus einer geöffneten Nachricht füllen. Sie können beispielsweise eine Schaltfläche in der Nachrichten-Benutzeroberfläche Ihres Add-ons einfügen, mit der eine Antwort auf die aktuell geöffnete Nachricht erstellt wird, die bereits mit Informationen aus dem Add-on ausgefüllt ist.
Wenn eine Aktion ausgelöst wird, durch die Nachrichten erstellt werden, führt Gmail eine Rückruffunktion aus, um den Entwurf zu erstellen und zurückzugeben. Gmail zeigt diesen Entwurf dann in der Benutzeroberfläche in einem standardmäßigen E-Mail-Bearbeitungsfenster an, das der Nutzer bei Bedarf bearbeiten und senden kann.
Aktion zum Erstellen eines Nachrichtenentwurfs konfigurieren
So konfigurieren Sie ein Widget, damit beim Auswählen eine Aktion zum Erstellen eines Entwurfs gestartet wird:
Achten Sie darauf, dass Ihr Manifest den Bereich
action.compose
enthält:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Sie können stattdessen einen weniger restriktiven Umfang verwenden, sollten dies aber nur tun, wenn dieser Umfang unbedingt erforderlich ist.
Erstellen Sie ein
Action
-Objekt und verknüpfen Sie es mit einer von Ihnen definierten Callback-Funktion.Rufe die Widget-Handlerfunktion des Widgets
setComposeAction()
auf und gib dasAction
-Objekt sowieComposeEmailType
an.Implementieren Sie die Rückruffunktion, die die Aktion zum Erstellen des Entwurfs ausführt. Diese Funktion erhält ein Ereignisobjekt als Argument. Die Callback-Funktion muss Folgendes tun:
- Erstellen Sie ein
GmailDraft
-Objekt. - Erstellen Sie ein
ComposeActionResponse
-Objekt mit der KlasseComposeActionResponseBuilder
und demGmailDraft
-Objekt. - Geben Sie die erstellte
ComposeActionResponse
zurück.
- Erstellen Sie ein
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 aber aus Informationen, die dem Add-on selbst zur Verfügung gestellt wurden, aus Informationen in der geöffneten Nachricht oder aus Informationen, die über einen Drittanbieterdienst erfasst wurden. Das Ereignisobjekt, das an die Rückruffunktion ü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 das ComposeEmailType
-Enum gesteuert, das der setComposeAction()
zugewiesen ist.
Sie können Antwortentwürfe als einzelne Antworten oder als Antwort an alle 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 Funktionen des Gmail-Dienstes erstellen:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Antwortentwürfe
Ein Antwortentwurf ist Teil eines vorhandenen Nachrichtenthreads. Entwürfe für Antworten sind entweder einzelne Antworten, die nur an den Absender einer Nachricht gesendet werden, oder „An alle antworten“-Entwürfe, die an alle gesendet werden, die diese Nachricht erhalten haben. Sie können einen Antwortentwurf mit einer der folgenden Gmail-Dienstfunktionen erstellen:
GmailMessage.createDraftReply(body)
GmailMessage.createDraftReply(body, options)
GmailMessage.createDraftReplyAll(body)
GmailMessage.createDraftReplyAll(body, options)
GmailThread.createDraftReply(body)
GmailThread.createDraftReply(body, options)
GmailThread.createDraftReplyAll(body)
GmailThread.createDraftReplyAll(body, options)
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();
}