Funzioni SaveData, LoadData e ClearData

Si applica a: App canvas

Salva e ricarica una raccolta dalla memoria dell'host dell'app.

Nota

Queste funzioni ora possono essere utilizzate durante la riproduzione di un'app in un browser Web come una funzionalità sperimentale. Questo funzionalità è disabilitata per impostazione predefinita. Per abilitare, vai a Impostazioni>Funzionalità in arrivo>Sperimentale>Abilita le funzioni SaveData, LoadData e ClearData sul lettore Web." e attiva l'interruttore. Per inviare feedback su questa funzione sperimentale, vai al Forum della community di Power Apps.

Descrizione

La funzione SaveData salva con nome una raccolta consentendone l'uso in un secondo momento.

La funzione LoadData ricarica una raccolta in base al nome salvato in precedenza con SaveData. Non è possibile usare questa funzione per caricare una raccolta da un'altra origine.

La funzione ClearData cancella la memoria con un nome specifico o cancella tutta la memoria associata all'app se non viene fornito alcun nome.

Nota

  • Il nome condiviso tra SaveData, LoadData e ClearData è una chiave, non un nome di file. Non è necessario che sia complesso in quanto i nomi sono univoci per ciascuna app e non vi è alcun rischio di conflitto di nomi. Il nome non deve contenere alcuno di questi caratteri:*".?:\<>|/.
  • SaveData è limitato a 1 MB di dati per Power Apps in esecuzione in Teams e in un browser Web. Non c'è un limite fisso per Power Apps in esecuzione in un lettore per dispositivi mobili ma sono presenti limiti pratici discussi di seguito.
  • Non usare SaveData per archiviare dati sensibili nel Web poiché verranno archiviati in testo normale.

Utilizzare queste funzioni per migliorare le prestazioni di avvio dell'app:

  • Memorizzando dati nella cache nella formula App.OnStart al primo avvio.
  • Ricaricaricamento della cache locale nelle successive esecuzioni.

È inoltre possibile utilizzare queste funzioni per aggiungere semplici funzionalità offline all'app.

Non è possibile utilizzare queste funzioni in un browser quando:

  • Si crea l'app in Power Apps Studio.

Per testare l'app, eseguirla in Power Apps Mobile su un dispositivo iPhone o Android.

Queste funzioni sono limitate dalla quantità di memoria dell'app disponibile mentre operano su una raccolta in memoria. La memoria disponibile può variare in base a fattori quali:

  • Dispositivo e sistema operativo.
  • Memoria che utilizza il lettore di Power Apps.
  • Complessità dell'app con schermate e controlli.

Testare l'app con scenari previsti sul tipo di dispositivi che verranno probabilmente eseguiti durante la memorizzazione di dati di grandi dimensioni. È necessario disporre tra 30 e 70 MB di memoria disponibile in generale.

Queste funzioni dipendono dalla raccolta implicitamente definita con Collect o ClearCollect. Non è necessario chiamare Collect o ClearCollect per caricare i dati nella raccolta per definirli. È un caso comune quando si utilizza LoadData dopo la funzione SaveData. Tutto ciò che serve è la presenza di queste funzioni in una formula per definire implicitamente la struttura della raccolta. Per ulteriori informazioni, vedere Creazione e rimozione di variabili.

I dati caricati verranno aggiunti alla raccolta. Utilizzare la funzione Clear prima di chiamare LoadData se si intende iniziare con una raccolta vuota.

Sicurezza dei dati

Considera attentamente l'isolamento e la crittografia dei dati archiviati con SaveData e decidi se è appropriato per le tue esigenze, soprattutto se i dispositivi sono condivisi da più utenti.

I dati memorizzati con SaveData sono isolati dagli altri Power Apps dai giocatori Power Apps. I dati vengono archiviati in base all'ID app dell'app, isolando automaticamente lo spazio dei nomi SaveData tra Power Apps.

Il sistema operativo e il browser sono responsabili dell'isolamento dei dati tra Power Apps e altre app su un dispositivo e con siti Web. Ad esempio, il sistema operativo è responsabile dell'isolamento dei dati archiviati in Microsoft Outlook dai dati archiviati in Power Apps e dell'isolamento di tali dati anche da siti Web come Bing.com o PowerApps.com. Le funzionalità sandbox dell'app integrate nel sistema operativo vengono utilizzate per l'archiviazione SaveData che di solito non è accessibile o nascosta all'utente.

Quando si utilizza la stessa app, il sistema operativo e il browser sono anche responsabili dell'isolamento dei dati tra diversi utenti a livello di sistema operativo. Ad esempio, se due utenti diversi condividono un computer e utilizzano due credenziali di accesso Windows diverse, il sistema operativo è responsabile dell'isolamento dei dati tra i due utenti Windows.

I dati possono o meno essere isolati tra diversi utenti Power Apps se l'utente del sistema operativo è lo stesso. Non tutti i giocatori Power Apps li trattano allo stesso modo. Ad esempio, dopo aver effettuato l'accesso come lo stesso utente Windows, nel lettore Power Apps, l'utente si disconnette da Power Apps e accede come un altro utente Power Apps. I dati archiviati in un'app prima del cambio di utente Power Apps, potrebbero essere accessibili al secondo utente Power Apps all'interno della stessa app. I dati potrebbero anche essere rimossi e il primo utente Power Apps potrebbe non essere più in grado di accedervi. Il comportamento varia tra i giocatori Power Apps.

Il dispositivo può anche crittografare i dati. In alternativa, è possibile utilizzare uno strumento di gestione di dispositivi mobili come Microsoft Intune. I dati archiviati durante la riproduzione di un'app in un browser Web non sono crittografati.

Sintassi

SaveData( Collection, Name )
LoadData( Collection, Name [, IgnoreNonexistentFile ])

  • Collection: obbligatorio. Raccolta da salvare o caricare.
  • Name: obbligatorio Nome dell'archivio. È necessario usare lo stesso nome per salvare e caricare lo stesso set di dati. Lo spazio dei nomi non viene condiviso con altre app. I nomi non deve contenere alcuno di questi caratteri:*".?:\<>|/.
  • IgnoreNonexistentFile: facoltativo. Un valore booleano che indica cosa fare se il file non esiste già. Utilizzare false (impostazione predefinita) per restituire un errore e true per eliminare l'errore.

ClearData( [Name] )

  • Name: facoltativo. Nome della memoria precedentemente salvata con SaveData. Se Nome non viene fornito, tutto lo spazio di archiviazione associato all'app viene cancellato.

Esempi

Formula Descrizione Risultato
SaveData( LocalCache, "MyCache" ) Salvare la raccolta LocalCache nel dispositivo dell'utente con il nome "MyCache", adatto per la funzione LoadData da recuperare in seguito. I dati vengono salvati nell'host dell'app con il nome "MyCache".
LoadData( LocalCache, "MyCache" ) Carica la raccolta LocalCache dal dispositivo dell'utente con il nome "MyCache", precedentemente memorizzato con una chiamata a SaveData. I dati vengono caricati dall'host dell'app con il nome "MyCache".
ClearData( "MyCache" ) Cancella la memoria con il nome "MyCache". Tutti i dati memorizzati con questo nome non saranno più disponibili tramite LoadData. I dati vengono rimossi dall'host dell'app con il nome "MyCache".
ClearData() Cancella tutto lo spazio di archiviazione associato a questa app. I dati archiviati da altre app non sono interessati. Tutti i dati vengono rimossi dall'host dell'app.

Esempio offline semplice

L'esempio semplice seguente acquisisce e memorizza i nomi e le immagini degli elementi quotidiani quando si è offline. Memorizza le informazioni nella memoria locale del dispositivo per un uso successivo. Ciò consente di chiudere l'app o riavviare il dispositivo senza perdere dati.

Nota

Questo esempio utilizza un controllo camera per acquisire le immagini. Poiché SaveData è limitato a 1 MB di dati durante l'esecuzione in Teams o in un Web browser, questo esempio non funzionerà con più di poche immagini. Inoltre, a seconda della fotocamera, potrebbe non funzionare nemmeno con un'immagine. Usa un dispositivo per svolgere questo esempio completo o rimuovi il controllo camera e la parte dell'immagine di questo esempio per l'esecuzione in Teams o in un Web browser.

  1. Creare un'app canvas vuota con un layout per tablet. Per maggiori dettagli, leggere Creazione di un'app da un modello e selezionare Layout tablet sotto App vuota.

  2. Aggiungere un controllo Text input e un controlloCamera e disporli più o meno come mostrato:

    Un controllo text input e un controllo camera aggiunti a uno schermo vuoto.

  3. Aggiungere un controllo Button.

  4. Fare doppio clic sul controllo button per modificare il testo del pulsante in Aggiungi elemento (o modificare la proprietà Text).

  5. Impostare la proprietà OnSelect del controllo button su questa formula che aggiungerà un elemento alla nostra raccolta:

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    Un controllo button aggiunto con il testo

  6. Aggiungere un altro controllo Button.

  7. Fare doppio clic sul controllo button per modificare il testo del pulsante in Salva dati (o modificare la proprietà Text).

  8. Impostare la proprietà OnSelect del controllo button su questa formula per salvare la raccolta nel dispositivo locale:

    SaveData( MyItems, "LocalSavedItems" )
    

    Un controllo button aggiunto con il testo

    È tentante testare il pulsante in quanto non influisce su nulla. Ma verrà visualizzato solo un errore in quanto la creazione avviene in un browser Web. Salvare dapprima l'app e aprirla su un dispositivo prima di seguire i passaggi successivi per testare questa formula:

  9. Aggiungere un terzo controllo Button.

  10. Fare doppio clic sul controllo button per modificare il testo del pulsante in Carica dati (o modificare la proprietà Text).

  11. Impostare la proprietà OnSelect del controllo button su questa formula per caricare la raccolta dal dispositivo locale:

    LoadData( MyItems, "LocalSavedItems" )
    

    Un controllo button aggiunto con il testo

  12. Aggiungere un controllo Gallery con un layout verticale che include un'immagine e aree di testo:

    Selezione del controllo Gallery e layout

  13. Quando richiesto, selezionare la raccolta MyItems come origine dati per questa raccolta. Viene impostata la proprietà Items del controllo Gallery:

    Selezione della raccolta di origine dati. Il controllo dell'immagine nel modello della raccolta deve configurare per impostazione predefinita la proprietà Image su ThisItem.Picture ed entrambi i controlli delle etichette devono configurare per impostazione predefinita le rispettive proprietà Text su ThisItem.Item. Controllare queste formule se, dopo aver aggiunto gli elementi nei passaggi seguenti, la raccolta è vuota.

  14. Posizionare il controllo a destra degli altri controlli:

    Raccolta riposizionata a destra della schermata.

  15. Salvare l'app. Se è la prima volta che è stata salvata, non è necessario pubblicarla. Se non è la prima volta, pubblicare l'app dopo averla salvata.

  16. Aprire l'app in un dispositivo, ad esempio un telefono o un tablet. Le funzioni SaveData e LoadData non possono essere utilizzate in Studio o in un browser Web. Aggiornare l'elenco di app se l'app non viene visualizzata immediatamente; potrebbero essere necessari alcuni secondi prima che l'app appaia sul dispositivo. Anche disconnettersi e accedere nuovamente al proprio account può essere d'aiuto.

    App in esecuzione senza elementi aggiunti. Una volta scaricata l'app, puoi disconnetterti dalla rete ed eseguire l'app offline.

  17. Immettere il nome e scattare una foto di un elemento.

  18. Selezionare il pulsante Aggiungi elemento. Ripetere l'aggiunta di elementi un paio di volte per caricare la raccolta.

    App in esecuzione con tre elementi aggiunti.

  19. Selezionare il pulsante Salva dati. Ciò salverà i dati nella raccolta sul dispositivo locale.

  20. Chiudere l'app. La raccolta nella memoria andrà persa, inclusi tutti i nomi e le immagini degli elementi, ma rimarranno comunque nella memoria del dispositivo.

  21. Avviare di nuovo l'app. La raccolta nella memoria verrà nuovamente visualizzata come vuota nella raccolta.

    App di nuovo in esecuzione senza elementi aggiunti.

  22. Selezionare il pulsante Carica dati. La raccolta verrà ripopolata dai dati memorizzati sul dispositivo e gli elementi torneranno nella raccolta. La raccolta era vuota prima che questo pulsante chiamasse la funzione LoadData; non c'era bisogno di chiamare Collecto ClearCollect prima di caricare i dati dalla memoria.

    App in esecuzione con tre elementi ripristinati dopo la chiamata della funzione LoadData.

  23. Selezionare di nuovo il pulsante Carica dati. I dati memorizzati verranno aggiunti alla fine della raccolta e verrà visualizzata una barra di scorrimento nella raccolta. Se si desidera sostituire anziché aggiungere, utilizzare dapprima la funzione Clear per cancellare la raccolta prima di chiamare la funzione LoadData.

    App in esecuzione con sei elementi ripristinati dopo la doppia chiamata della funzione LoadData.

Esempio offline più avanzato

Per un esempio dettagliato, vedere l'articolo sulle funzionalità offline semplici.