Większość dodatków, oprócz prezentowania danych, wymaga od użytkownika wprowadzenia informacji. Gdy tworzysz dodatek oparty na kartach, możesz użyć interaktywnych widżetów, takich jak przyciski, pozycje menu na pasku narzędzi lub pola wyboru, aby poprosić użytkownika o dane potrzebne mu lub udostępnić inne opcje interakcji.
Dodawanie działań do widżetów
Aby widżety były interaktywne, najczęściej wystarczy połączyć je z konkretnymi działaniami i zaimplementować wymagane działanie w funkcji wywołania zwrotnego. Szczegóły znajdziesz w sekcji Dodatki.
W większości przypadków możesz wykonać tę ogólną procedurę, aby skonfigurować widżet do wykonywania określonego działania po wybraniu lub aktualizacji:
- 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 wywołać wymagane działanie.
Przykład
Ten przykład pokazuje ustawienie przycisku, który po kliknięciu wyświetla powiadomienie użytkownika. Kliknięcie aktywuje funkcję wywołania zwrotnego notifyUser()
z argumentem określającym tekst powiadomienia. Zwrócenie kompilacji ActionResponse
powoduje wyświetlenie wyświetlonego 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:
Widżety interaktywne zwykle wymagają co najmniej 1 metody obsługi, aby określić działanie.
Jeśli masz URL i chcesz otworzyć go w karcie, użyj funkcji obsługi widżetów
setOpenLink()
. Dzięki temu nie trzeba definiować obiektuAction
ani funkcji wywołania zwrotnego. Jeśli najpierw musisz utworzyć adres URL lub wykonać inne czynności przed otwarciem adresu URL, zdefiniujAction
i zamiast tego użyjsetOnClickOpenLinkAction()
.Jeśli korzystasz z funkcji obsługi widżetów
setOpenLink()
lubsetOnClickOpenLinkAction()
, musisz podać obiektOpenLink
, aby określić adres URL, który chcesz otworzyć. Za pomocą tego obiektu możesz też określić zachowanie przy otwieraniu i zamykaniu za pomocą wyliczeniaOpenAs
iOnClose
.Może się zdarzyć, że więcej niż 1 widżet może używać tego samego obiektu
Action
. Jeśli jednak chcesz przekazywać do funkcji wywołania zwrotnego inne parametry, musisz jednak zdefiniować inne obiektyAction
.Funkcje wywołania zwrotnego powinny być proste. Aby dodatki były elastyczne, usługa karty ogranicza funkcje wywołań zwrotnych do maksymalnie 30 sekund czasu wykonywania. Jeśli potrwa to dłużej, interfejs użytkownika dodatku może nie zaktualizować prawidłowo wyświetlania karty w odpowiedzi na żądanie
Action
.Jeśli stan danych w backendzie innej firmy zmieni się w wyniku interakcji użytkownika z interfejsem dodatku, zalecamy ustawienie tego parametru na
true
w celu wyczyszczenia całej pamięci podręcznej po stronie klienta. Więcej informacji znajdziesz w opisie metodyActionResponseBuilder.setStateChanged()
.