Większość dodatków oprócz prezentowania danych wymaga od użytkownika podania informacji. Podczas tworzenia dodatku na podstawie kart możesz używać interaktywnych widżetów, takich jak przyciski, elementy menu na pasku narzędzi lub pola wyboru, aby poprosić użytkownika o dane, których potrzebuje Twój dodatek, lub udostępnić inne elementy sterujące interakcją.
Dodawanie działań do widżetów
W większości przypadków możesz uczynić widżety interaktywnymi, łącząc je z określonymi czynnikami i wdrażając wymagane działanie w funkcji wywołania zwrotnego. Szczegółowe informacje znajdziesz w sekcji Działania dodatkowe.
W większości przypadków możesz skonfigurować widżet, aby wykonywał określone działanie po wybraniu lub zaktualizowaniu:
- Utwórz obiekt
Action
, podając funkcję wywołania zwrotnego, która ma zostać wykonana, wraz z wymaganymi parametrami. - 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 powoduje wywołanie funkcji notifyUser()
z argumentem określającym tekst powiadomienia. Zwrot utworzonego elementu ActionResponse
powoduje 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 kart interaktywnych pamiętaj o tych kwestiach:
Interaktywne widżety wymagają zwykle co najmniej 1 metody obsługi, aby zdefiniować ich działanie.
Jeśli masz adres URL i chcesz otworzyć go na karcie, użyj funkcji obsługi widżetu
setOpenLink()
. Dzięki temu nie trzeba definiować obiektuAction
ani funkcji wywołania zwrotnego. Jeśli przed otwarciem adresu URL musisz najpierw utworzyć adres URL lub wykonać inne dodatkowe czynności, zdefiniuj zmiennąAction
i użyj jej zamiast zmiennejsetOnClickOpenLinkAction()
.Jeśli używasz funkcji obsługi widżetu
setOpenLink()
lubsetOnClickOpenLinkAction()
, musisz podać obiektOpenLink
, aby określić, który adres URL ma zostać otwarty. Możesz też użyć tego obiektu do określenia zachowania otwierania i zamykania za pomocą enumeracjiOpenAs
iOnClose
.W jednym widżecie może być używany ten sam obiekt
Action
. Jeśli jednak chcesz podać inną funkcję wywołania zwrotnego, musisz zdefiniować inne obiektyAction
.Funkcje wywołania zwrotnego powinny być proste. Aby zapewnić dodatkom odpowiednią responsywność, usługa kart ogranicza czas wykonywania funkcji wywołania zwrotnego do maksymalnie 30 sekund. Jeśli wykonanie trwa dłużej, interfejs dodatku może nie zaktualizować prawidłowo wyświetlania karty w odpowiedzi na
Action
.Jeśli stan danych na zapleczu usługi zewnętrznej zmieni się w wyniku interakcji użytkownika z interfejsem dodatku, zalecamy ustawienie bitu „stan zmieniony” na
true
, aby wyczyścić istniejące pamięci podręczne po stronie klienta. Więcej informacji znajdziesz w opisie metodyActionResponseBuilder.setStateChanged()
.