Fonctions SaveData, LoadData et ClearData

S’applique à : Applications canevas

Enregistre et recharge une collection à partir du stockage de l’hôte de l’application.

Note

Ces fonctions peuvent désormais être utilisées lors de la lecture d’une application dans un navigateur Web en tant que fonction expérimentale. Cette fonctionnalité est désactivée par défaut. Pour l’activer, accédez à Paramètres>Fonctionnalités à venir>Expérimental>SaveData, LoadData, ClearData activés sur le lecteur Web. et activez le commutateur. Pour envoyer des commentaires concernant cette fonctionnalité expérimentale, accédez au Forum de la communauté Power Apps.

Description

La fonction SaveData stocke et nomme une collection pour une utilisation ultérieure.

La fonction LoadData recharge une collection précédemment enregistrée avec SaveData selon son nom. Vous ne pouvez pas utiliser cette fonction pour charger une collection à partir d’une autre source.

La fonction ClearData efface le stockage sous un nom spécifique ou efface tout le stockage associé à l’application si aucun nom n’est fourni.

Note

  • Le nom partagé entre les fonctions SaveData, LoadData, et ClearData est une clé, pas un nom de fichier. Cela n’a pas besoin d’être complexe car les noms sont uniques à chaque application et il n’y a aucun risque de conflit de noms. Le nom ne doit contenir aucun de ces caractères : *".?:\<>|/.
  • SaveData est limité à 1 Mo de données pour l’exécution de Power Apps dans Teams et dans un navigateur Web. Il n’y a pas de limite fixe pour que Power Apps fonctionne dans un lecteur mobile, mais il existe des limites pratiques décrites ci-dessous.
  • Ne pas utiliser SaveData pour stocker des données sensibles sur le Web, car elles seront stockées en texte brut.

Utilisez ces fonctions pour améliorer les performances de démarrage de l’application en :

  • Mise en cache des données dans la formule App.OnStart au premier essai.
  • Rechargement du cache local lors des prochaines exécutions.

Vous pouvez également utiliser ces fonctions pour ajouter des capacités hors ligne simples à votre application.

Vous ne pouvez pas utiliser ces fonctions dans un navigateur lorsque :

  • Création de l’application dans Power Apps Studio.

Pour tester votre application, exécutez-la dans Power Apps Mobile sur un appareil iPhone ou Android.

Ces fonctions sont limitées par la quantité de mémoire d’application disponible car elles fonctionnent sur une collection en mémoire. La mémoire disponible peut varier en fonction de facteurs tels que :

  • L’appareil et le système d’exploitation.
  • La mémoire que le lecteur Power Apps utilise.
  • Complexité de l’application avec écrans et commandes.

Testez votre application avec les scénarios attendus sur le type d’appareils que vous attendez de l’application lorsqu’elle stocke des données volumineuses. Attendez-vous à avoir généralement entre 30 Mo et 70 Mo de mémoire disponible.

Ces fonctions dépendent de la collection implicitement définie avec Collect ou ClearCollect. Vous n’avez pas besoin d’appeler Collecte ou ClearCollect pour charger des données dans la collection pour les définir. C’est un cas courant lors de l’utilisation LoadData après une précédente SaveData. Il suffit de la présence de ces fonctions dans une formule pour définir implicitement la structure de la collection. Pour plus d’informations, voir création et suppression de variables.

Les données chargées seront ajoutées à la collection. Utilisez la fonction Clear avant d’appeler LoadData si vous voulez commencer avec une collection vide.

Sécurité des données

Examinez attentivement l’isolement et le chiffrement des données stockées avec SaveData et décidez si cela convient à vos besoins, en particulier si les appareils sont partagés par plusieurs utilisateurs.

Les données stockées avec SaveData sont isolées des autres Power Apps par les lecteurs Power Apps. Les données sont stockées en fonction de l’ID d’application de l’application, isolant automatiquement l’espace de nom SaveData entre Power Apps.

Le système d’exploitation et le navigateur sont chargés d’isoler les données entre Power Apps et d’autres applications sur un appareil et avec des sites Web. Par exemple, le système d’exploitation est chargé d’isoler les données stockées dans Microsoft Outlook des données stockées dans Power Apps, et également d’isoler ces données des sites Web tels que Bing.com ou PowerApps.com. Les fonctions intégrées de bac à sable du système d’exploitation sont utilisées pour le stockage SaveData qui n’est généralement pas accessible ou caché à l’utilisateur.

Lors de l’utilisation de la même application, le système d’exploitation et le navigateur sont également chargés d’isoler les données entre les différents utilisateurs au niveau du système d’exploitation. Par exemple, si deux utilisateurs différents partagent un ordinateur et utilisent deux identifiants de connexion Windows différents, le système d’exploitation est chargé d’isoler les données entre les deux utilisateurs Windows.

Les données peuvent ou non être isolées entre différents utilisateurs Power Apps si l’utilisateur du système d’exploitation est le même. Tous les lecteurs Power Apps ne traitent pas cela de la même manière. Par exemple, alors qu’il est connecté en tant que même utilisateur Windows, dans le lecteur Power Apps, l’utilisateur se déconnecte Power Apps et se connecte en tant qu’utilisateur Power Apps différent. Les données stockées dans une application avant le changement d’utilisateur Power Apps peuvent être accessibles au deuxième utilisateur Power Apps au sein de la même application. Les données peuvent également être supprimées et le premier utilisateur Power Apps risque de ne plus pouvoir y accéder. Le comportement varie entre les lecteurs Power Apps.

Le système d’exploitation peut également crypter les données ; ou vous pouvez utiliser un outil de gestion des appareils mobiles tel que Microsoft Intune. Les données stockées lors de la lecture d’une application dans un navigateur Web ne sont pas cryptées.

Syntaxe

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

  • Collection : obligatoire. Collection à stocker ou à charger.
  • Name : obligatoire. Nom du stockage. Le même nom doit être le même pour enregistrer et charger le même jeu de données. L’espace de noms n’est pas partagé avec d’autres applications. Les noms ne doivent contenir aucun de ces caractères : *".?:\<>|/.
  • IgnoreNonexistentFile : facultatif. Une valeur booléenne indiquant quoi faire si le fichier n’existe pas déjà. Utilisez false (par défaut) pour renvoyer une erreur et true pour supprimer l’erreur.

ClearData( [Nom] )

  • Name : facultatif Nom du stockage précédemment enregistré avec SaveData. Si le Nom n’est pas indiqué, tout l’espace de stockage associé à l’application est effacé.

Exemples

Formule Description Résultat
SaveData( LocalCache, "MyCache" ) Enregistrez la collection LocalCache sur l’appareil de l’utilisateur sous le nom "MyCache", adapté à LoadData pour récupérer plus tard. Les données sont enregistrées sur l’hôte de l’application sous le nom « MyCache ».
LoadData( LocalCache, "MyCache" ) Charge la collection LocalCache depuis l’appareil de l’utilisateur sous le nom "MyCache", préalablement stockée avec un appel à SaveData. Les données sont chargées à partir de l’hôte de l’application sous le nom « MyCache ».
ClearData( « MyCache » ) Efface le stockage sous le nom « MyCache ». Toutes les données stockées sous ce nom ne seront plus disponibles via LoadData. Les données sont supprimées de l’hôte de l’application sous le nom « MyCache ».
ClearData() Efface tout le stockage associé à cette application. Les données stockées par d’autres applications ne sont pas affectées. Toutes les données sont supprimées de l’hôte de l’application.

Exemple simple hors ligne

Un exemple simple suivant capture et stocke les noms et les images des objets du quotidien hors ligne. Il stocke les informations dans le stockage local de l’appareil pour une utilisation ultérieure. Cela permet de fermer l’application ou de redémarrer l’appareil sans perdre de données.

Note

Cet exemple utilise un contrôle Camera pour capturer des images. Depuis SaveData est limité à 1 Mo de données lors de l’exécution dans Teams ou dans un navigateur Web, cet exemple ne fonctionnera pas avec plus de quelques images. De plus, selon la caméra, il peut ne pas fonctionner avec une seule image. Utilisez un appareil pour travailler sur cet exemple complet ou supprimez le contrôle Camera et la partie image de cet exemple pour l’exécuter dans Teams ou dans un navigateur Web.

  1. Créez une application canevas vierge avec une disposition de tablette. Pour plus de détails, lisez Création d’une application à partir d’un modèle et sélectionnez Disposition de la tablette en dessous de Application vierge.

  2. Ajouter un contrôle Text input et un contrôle Camera et les organiser à peu près comme indiqué :

    Une saisie de texte et un contrôle Camera ajoutés à un écran vide.

  3. Ajouter un contrôle Button.

  4. Double-sélectionnez le contrôle button pour changer le texte du bouton en Ajouter un article (ou modifiez la propriété Text).

  5. Définissez la propriété OnSelect du contrôle button à cette formule qui ajoutera un élément à notre collection :

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

    Contrôle button ajouté avec le texte

  6. Ajouter un autre contrôle Button.

  7. Double-sélectionnez le contrôle button pour changer le texte du bouton en Enregistrer les données (ou modifiez la propriété Text).

  8. Définissez la propriété OnSelect du contrôle button à cette formule pour enregistrer notre collection sur l’appareil local :

    SaveData( MyItems, "LocalSavedItems" )
    

    Contrôle button ajouté avec le texte

    Il est tentant de tester le bouton car il n’affecte rien. Mais vous ne verrez qu’une erreur lors de la création dans un navigateur Web. Enregistrez d’abord l’application et ouvrez-la sur un appareil avant de suivre les étapes suivantes pour tester cette formule :

  9. Ajouter un troisième contrôle Button.

  10. Double-sélectionnez le contrôle button pour changer le texte du bouton en Charger les données (ou modifiez la propriété Text).

  11. Définissez la propriété OnSelect du contrôle button à cette formule pour charger notre collection à partir de l’appareil local :

    LoadData( MyItems, "LocalSavedItems" )
    

    Contrôle button ajouté avec le texte

  12. Ajouter un contrôle Gallery avec une disposition verticale qui comprend une image et des zones de texte :

    Sélection de variétés de galerie,

  13. Lorsque vous y êtes invité, sélectionnez la collection MyItems comme source de données pour cette galerie. Cela définit la propriété Items du contrôle Gallery :

    Sélection de la galerie de source de données. Le contrôle Image dans le modèle de galerie doit avoir par défaut sa propriété Image sur ThisItem.Picture et les contrôles d’étiquette doivent tous deux avoir par défaut leurs propriétés Text sur ThisItem.Item. Vérifiez ces formules si, après avoir ajouté des éléments dans les étapes suivantes, vous ne voyez rien dans la galerie.

  14. Positionnez le contrôle à droite des autres contrôles :

    Galerie repositionnée à droite de l’écran.

  15. Enregistrez votre application. Si c’est la première fois qu’il est enregistré, il n’est pas nécessaire de le publier. Si ce n’est pas la première fois, publiez l’application après avoir enregistré.

  16. Ouvrez l’application sur un appareil, que ce soit un téléphone ou une tablette. SaveData et LoadData ne peut pas être utilisé dans Studio ou dans un navigateur Web. Actualisez votre liste d’applications si vous ne voyez pas votre application immédiatement, cela peut prendre quelques secondes pour que l’application apparaisse sur votre appareil. La déconnexion et la reconnexion à votre compte peuvent également vous aider.

    Application en cours d’exécution sans éléments ajoutés. Une fois votre application téléchargée, vous pouvez vous déconnecter du réseau et exécuter l’application hors ligne.

  17. Saisissez le nom et prenez une photo d’un élément.

  18. Cliquez sur le bouton Add Item. Répétez l’ajout d’éléments plusieurs fois pour charger votre collection.

    Application en cours d’exécution avec trois éléments ajoutés.

  19. Cliquez sur le bouton Enregistrer les données. Cela enregistrera les données de votre collection sur votre appareil local.

  20. Fermer l’application. Votre collection en mémoire sera perdue, y compris tous les noms d’articles et les images, mais ils seront toujours là dans le stockage de l’appareil.

  21. Lancer l’application à nouveau. La collection en mémoire sera de nouveau affichée comme vide dans la galerie.

    Application en cours de réexécution sans éléments ajoutés.

  22. Cliquez sur le bouton Charger les données. La collection sera renseignée à nouveau à partir des données stockées sur votre appareil et vos articles seront de retour dans la galerie. La collection était vide avant que ce bouton n’appelle la fonction LoadData ; il n’était pas nécessaire d’appeler Collect ou ClearCollect avant de charger les données du stockage.

    Application exécutée avec trois éléments restaurés après l’appel de la fonction LoadData.

  23. Cliquez à nouveau sur le bouton Charger les données. Les données stockées seront ajoutées à la fin de la collection et une barre de défilement apparaîtra sur la galerie. Si vous souhaitez remplacer plutôt que d’ajouter, utilisez la fonction Clear d’abord pour effacer la collection avant d’appeler la fonction LoadData.

    Application exécutée avec six éléments restaurés après deux appels de la fonction LoadData.

Exemple hors ligne plus avancé

Pour un exemple détaillé, voir l’article sur capacités hors ligne simples.