W dodatku do Google Workspace możesz tworzyć widżety, które mają połączone działania. 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 tworzy odpowiedź na aktualnie otwartą wiadomość z wstępnie wypełnionymi 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 ten szkic w interfejsie w standardowym oknie tworzenia e-maila, który użytkownik może edytować i wysłać w razie potrzeby.
Konfigurowanie działania, aby utworzyć wersję roboczą wiadomości
Aby skonfigurować widżet tak, aby po jego wybraniu uruchamiał działanie polegające na tworzeniu wersji roboczej:
Upewnij się, że plik manifestu zawiera
action.compose
zakres:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Możesz użyć bardziej liberalnego zakresu, ale tylko wtedy, gdy jest to absolutnie konieczne.
Utwórz obiekt
Action
i połącz go ze zdefiniowaną przez siebie funkcją wywołania zwrotnego.Wywołaj funkcję obsługi widżetu
setComposeAction()
, podając obiektAction
i określając parametrComposeEmailType
.Zaimplementuj funkcję wywołania zwrotnego, która wykonuje działanie tworzenia projektu. Jej argumentem jest obiekt zdarzenia. Funkcja wywołania zwrotnego musi:
- Utwórz obiekt
GmailDraft
. - Utwórz obiekt
ComposeActionResponse
za pomocą klasyComposeActionResponseBuilder
i obiektuGmailDraft
. - Zwracaj zbudowane
ComposeActionResponse
.
- Utwórz obiekt
Możesz wstępnie wypełnić GmailDraft
utworzone w funkcji wywołania zwrotnego pola odbiorcy, temat, treść wiadomości i załączniki. Do wypełnienia wersji roboczej dane mogą pochodzić z dowolnego źródła, ale zwykle pochodzą z informacji przekazanych samemu dodatkowi, informacji w otwartej wiadomości lub informacji zebranych z usługi innej firmy. Obiekt zdarzenia przekazany do funkcji wywołania zwrotnego zawiera identyfikator otwartej wiadomości i inne informacje dotyczące dodatku, których możesz użyć do wstępnego wypełnienia wersji roboczej.
Możesz utworzyć wersję roboczą jako nową wiadomość samodzielną lub jako odpowiedź na istniejącą wiadomość. Jest ona kontrolowana przez parametr ComposeEmailType
enum przekazany do funkcji setComposeAction()
.
Możesz tworzyć wersje robocze odpowiedzi jako pojedyncze odpowiedzi lub odpowiedzi „odpowiedz wszystkim”.
Samodzielne wersje robocze
Samodzielny szkic rozpoczyna nowy wątek i nie jest odpowiedzią na żadną istniejącą wiadomość. Możesz utworzyć samodzielny projekt 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 wysyłane tylko do nadawcy wiadomości lub wersje robocze odpowiedzi „odpowiedz wszystkim”, które są wysyłane do wszystkich, którzy otrzymali tę wiadomość. 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
Ten fragment kodu pokazuje, jak przypisać do przycisku działanie, które tworzy projekt 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 specified
// above.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}