Większość dodatków oprócz wyświetlania danych wymaga od użytkownika wprowadzenia informacji. Podczas tworzenia dodatku opartego na kartach możesz używać interaktywnych widżetów, takich jak przyciski, elementy menu paska narzędzi czy pola wyboru, aby prosić użytkownika o dane potrzebne dodatkowi lub udostępniać inne elementy sterujące.
Dodawanie działań do widżetów
Większość widżetów możesz uczynić interaktywnymi, łącząc je z określonymi działaniami i wdrażając wymagane zachowanie w funkcji wywołania zwrotnego. Szczegółowe informacje znajdziesz w sekcji działań dodatkowych.
W większości przypadków możesz skonfigurować widżet tak, aby po wybraniu lub zaktualizowaniu wykonywał określone działanie, postępując zgodnie z tą ogólną procedurą:
- Utwórz obiekt
Action, określając funkcję wywołania zwrotnego, która ma zostać wykonana, oraz wszelkie wymagane parametry. - Połącz widżet z
Action, wywołując odpowiednią funkcję obsługi widżetu. - Zaimplementuj funkcję wywołania zwrotnego, aby wdrożyć wymagane działanie.
Przykład
W tym przykładzie ustawiamy przycisk, który po kliknięciu wyświetla powiadomienie dla użytkownika. Kliknięcie wywołuje funkcję wywołania zwrotnego notifyUser() z argumentem, który określa tekst powiadomienia. Zwrot wbudowanego urządzeniaActionResponse spowoduje wyświetlenie powiadomienia.
/**
* Build a simple card with a button that sends a notification.
* @return {Card}
*/
function buildSimpleCard() {
var buttonAction = CardService.newAction()
.setFunctionName('notifyUser')
.setParameters({'notifyText': 'Button clicked!'});
var button = CardService.newTextButton()
.setText('Notify')
.setOnClickAction(buttonAction);
// ...continue creating widgets, then create a Card object
// to add them to. Return the built Card object.
}
/**
* Callback function for a button action. Constructs a
* notification action response and returns it.
* @param {Object} e the action event object
* @return {ActionResponse}
*/
function notifyUser(e) {
var parameters = e.parameters;
var notificationText = parameters['notifyText'];
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification()
.setText(notificationText))
.build(); // Don't forget to build the response!
}
Projektowanie skutecznych interakcji
Podczas projektowania interaktywnych kart pamiętaj o tych kwestiach:
Interaktywne widżety zwykle wymagają co najmniej 1 metody obsługi, aby zdefiniować swoje działanie.
Użyj funkcji obsługi widżetu
setOpenLink(), gdy masz adres URL i chcesz go tylko otworzyć na karcie. Pozwala to uniknąć konieczności definiowania obiektuActioni funkcji wywołania zwrotnego. Jeśli musisz najpierw utworzyć adres URL lub wykonać inne dodatkowe czynności przed otwarciem adresu URL, zdefiniujActioni użyjsetOnClickOpenLinkAction().Gdy używasz funkcji obsługi widżetów
setOpenLink()lubsetOnClickOpenLinkAction(), musisz podać obiektOpenLink, aby określić, który adres URL ma zostać otwarty. Możesz też użyć tego obiektu, aby określić zachowanie otwierania i zamykania za pomocą wyliczeńOpenAsiOnClose.Więcej niż 1 widżet może używać tego samego obiektu
Action. Jeśli jednak chcesz przekazać do funkcji wywołania zwrotnego inne parametry, musisz zdefiniować inne obiektyAction.Nie komplikuj funkcji wywołania zwrotnego. Aby dodatki działały sprawnie, usługa karty ogranicza czas wykonywania funkcji zwrotnych do maksymalnie 30 sekund. Jeśli wykonanie trwa dłużej, interfejs dodatku może nie aktualizować prawidłowo wyświetlania karty w odpowiedzi na
Action.Jeśli stan danych na backendzie innej firmy zmieni się w wyniku interakcji użytkownika z interfejsem dodatku, zalecamy, aby dodatek ustawił bit „state changed” (stan zmieniony) na
true, aby wyczyścić istniejącą pamięć podręczną po stronie klienta. Więcej informacji znajdziesz w opisie metodyActionResponseBuilder.setStateChanged().