La maggior parte dei componenti aggiuntivi, oltre a presentare i dati, richiede all'utente di inserire informazioni. Quando crei un componente aggiuntivo basato su schede, puoi utilizzare widget interattivi come pulsanti, voci di menu della barra degli strumenti o caselle di controllo per richiedere all'utente i dati necessari per il componente aggiuntivo o fornire altri controlli di interazione.
Aggiungere azioni ai widget
Per la maggior parte, rendi i widget interattivi collegandoli ad azioni specifiche e implementando il comportamento richiesto in una funzione di callback. Per informazioni dettagliate, vedi le azioni dei componenti aggiuntivi.
Nella maggior parte dei casi, puoi seguire questa procedura generale per configurare un widget in modo che esegua un'azione specifica quando selezionato o aggiornato:
- Crea un oggetto
Action
, specificando la funzione di callback che deve essere eseguita, insieme agli eventuali parametri richiesti. - Collega il widget a
Action
chiamando la funzione di gestore widget appropriata. - Implementa la funzione di callback per attuare il comportamento richiesto.
Esempio
L'esempio seguente imposta un pulsante che visualizza una notifica per l'utente dopo il clic. Il clic attiva la funzione callback notifyUser()
con un argomento che specifica il testo della notifica. La restituzione di un elemento ActionResponse
creato comporta la visualizzazione di una notifica.
/**
* 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!
}
Progettare interazioni efficaci
Quando progetti schede interattive, tieni presente quanto segue:
In genere, i widget interattivi richiedono almeno un metodo di gestore per definirne il comportamento.
Utilizza la funzione di gestione del widget
setOpenLink()
quando hai un URL e vuoi aprirlo in una scheda. In questo modo non è necessario definire un oggettoAction
e una funzione di callback. Se devi prima creare l'URL o eseguire altri passaggi prima di aprire l'URL, definisci unaAction
e utilizzasetOnClickOpenLinkAction()
.Quando utilizzi le funzioni di gestore dei widget
setOpenLink()
osetOnClickOpenLinkAction()
, devi fornire un oggettoOpenLink
per definire quale URL aprire. Puoi utilizzare questo oggetto anche per specificare il comportamento di apertura e chiusura utilizzando le enumerazioniOpenAs
eOnClose
.È possibile che più widget utilizzino lo stesso oggetto
Action
. Tuttavia, devi definire oggettiAction
diversi se vuoi fornire parametri diversi alla funzione di callback.Mantieni semplici le funzioni di callback. Per garantire la risposta dei componenti aggiuntivi, il servizio carte limita le funzioni di callback a un massimo di 30 secondi di tempo di esecuzione. Se l'esecuzione richiede più tempo, la UI del componente aggiuntivo potrebbe non aggiornare correttamente la visualizzazione della scheda in risposta al
Action
.Se uno stato dei dati su un backend di terze parti cambia in seguito a un'interazione dell'utente con l'interfaccia utente del componente aggiuntivo, è consigliabile che il componente aggiuntivo imposti un bit di "stato modificato" su
true
, in modo che l'eventuale cache lato client esistente venga svuotata. Per ulteriori dettagli, consulta la descrizione del metodoActionResponseBuilder.setStateChanged()
.