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:
Upewnij się, że manifest zawiera zakres
action.composescope:https://www.googleapis.com/auth/gmail.addons.current.action.composeMożesz użyć bardziej liberalnego zakresu, ale tylko wtedy, gdy jest to absolutnie konieczne.
Utwórz obiekt
Actioni powiąż go z zdefiniowaną przez siebie funkcją wywołania zwrotnego.Wywołaj funkcję obsługi widżetu
setComposeAction, podając jej obiektActioni określającComposeEmailType.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:
- Utwórz
GmailDraftobiekt. - Utwórz obiekt
ComposeActionResponseza pomocą klasyComposeActionResponseBuilderi obiektuGmailDraft. - Zwróć utworzony obiekt
ComposeActionResponse.
- Utwórz
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:
GmailApp.createDraft(recipient, subject, body)GmailApp.createDraft(recipient, subject, body, options)
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:
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)
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();
}