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 chiedere all'utente i dati necessari al componente aggiuntivo o fornire altri controlli di interazione.
Aggiungere azioni ai widget
Per la maggior parte, rendi interattivi i widget collegandoli ad azioni specifiche e implementando il comportamento richiesto in una funzione di callback. Per i dettagli, vedi 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 viene selezionato o aggiornato:
- Crea un oggetto
Action, specificando la funzione di callback da eseguire, insieme a tutti i parametri richiesti. - Collega il widget a
Actionchiamando la funzione di gestione dei widget appropriata. - Implementa la funzione di callback per attivare il comportamento richiesto.
Esempio
Il seguente esempio imposta un pulsante che mostra una notifica all'utente
dopo che è stato fatto clic. Il clic attiva la funzione di callback notifyUser()
con un argomento che specifica il testo della notifica. La restituzione di un valore
ActionResponse
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:
I widget interattivi di solito richiedono almeno un metodo di gestione per definire il loro comportamento.
Utilizza la funzione di gestione del widget
setOpenLink()quando hai un URL e vuoi semplicemente aprirlo in una scheda. In questo modo si evita la necessità di definire un oggettoActione una funzione di callback. Se devi creare prima l'URL o eseguire altri passaggi aggiuntivi prima di aprirlo, definisci unActione utilizzasetOnClickOpenLinkAction().Quando utilizzi le funzioni di gestione dei widget
setOpenLink()osetOnClickOpenLinkAction(), devi fornire un oggettoOpenLinkper definire l'URL da aprire. Puoi anche utilizzare questo oggetto per specificare il comportamento di apertura e chiusura utilizzando le enumerazioniOpenAseOnClose.È possibile che più di un widget utilizzi lo stesso oggetto
Action. Tuttavia, devi definire oggettiActiondiversi se vuoi fornire parametri diversi alla funzione di callback.Mantieni semplici le funzioni di callback. Per mantenere la reattività dei componenti aggiuntivi, il servizio schede limita le funzioni di callback a un massimo di 30 secondi di tempo di esecuzione. Se l'esecuzione richiede più tempo, l'interfaccia utente del componente aggiuntivo potrebbe non aggiornare correttamente la visualizzazione della scheda in risposta a
Action.Se lo stato dei dati in un backend di terze parti cambia in seguito all'interazione di un utente con la UI del componente aggiuntivo, è consigliabile che il componente aggiuntivo imposti un bit "state changed" (stato modificato) su
truein modo che la cache lato client esistente venga cancellata. Per ulteriori dettagli, consulta la descrizione del metodoActionResponseBuilder.setStateChanged().