Funciones SaveData, LoadData y ClearData

Se aplica a: Aplicaciones de lienzo

Guarda y recarga una colección desde el almacenamiento del host de la aplicación.

Nota

Estas funciones ahora se pueden usar al reproducir una aplicación en un navegador web como una característica experimental. De forma predeterminada, esta característica está deshabilitada. Para habilitarla, navegue hasta Configuración>Próximas funciones>Experimental>Habilitado SaveData, LoadData, ClearData en el reproductor web." y active la opción. Para enviar comentarios sobre esta función experimental, vaya a Power Apps: Foro Comunitario .

Descripción

La función SaveData almacena una colección para su uso posterior con un nombre.

La función LoadData vuelve a cargar una colección por el nombre guardado anteriormente con SaveData. No se puede utilizar esta función para cargar una colección de otro origen.

La función ClearData borra el almacenamiento con un nombre específico o borra todo el almacenamiento asociado con la aplicación si no se proporciona ningún nombre.

Nota

  • El nombre compartido entre SaveData, LoadData y ClearData es una clave, no un nombre de archivo. No es necesario que sea complejo, ya que los nombres son únicos para cada aplicación y no existe peligro de conflicto de nombres. El nombre no debe contener ninguno de estos caracteres: *".?:\<>|/.
  • SaveData está limitado a 1 MB de datos para Power Apps ejecutándose en Teams y en un navegador web. No hay un límite fijo para Power Apps ejecutándose en un reproductor móvil, pero existen límites prácticos que se analizan a continuación.
  • No use SaveData para almacenar datos confidenciales en la web, ya que se almacenarán en texto sin formato.

Use estas funciones para mejorar el rendimiento de inicio de la aplicación al:

  • Almacenar datos en caché en la fórmula App.OnStart en una primera ejecución.
  • Recargar la caché local en las próximas ejecuciones.

También puede usar estas funciones para agregar capacidades sin conexión simples a su aplicación

No puede usar estas funciones dentro de un navegador cuando:

  • Crea la aplicación en Power Apps Studio.

Para probar la aplicación, ejecútela en Power Apps Mobile en un dispositivo iPhone o Android.

Estas funciones están limitadas por la cantidad de memoria de la aplicación disponible, ya que operan en una colección en memoria. La memoria disponible puede variar según factores como:

  • El dispositivo y el sistema operativo.
  • La memoria que usa el reproductor de Power Apps.
  • La complejidad de la aplicación con pantallas y controles.

Pruebe su aplicación con los escenarios esperados en el tipo de dispositivos que espera que la aplicación ejecute al almacenar datos grandes. Espere tener entre 30 MB y 70 MB de memoria disponible en general.

Estas funciones dependen de que la colección se defina implícitamente con Collect o ClearCollect. No necesita llamar a Collect o ClearCollect para cargar datos en la colección para definirla. Es un caso común usar LoadData después de SaveData. Todo lo que se necesita es la presencia de estas funciones en una fórmula para definir implícitamente la estructura de la colección. Para más información, vea crear y eliminar variables.

Los datos cargados se agregarán a la colección. Utilice la función Clear antes de llamar a LoadData si quiere comenzar con una colección vacía.

Seguridad de datos

Considere cuidadosamente el aislamiento y el cifrado de los datos almacenados con SaveData y decida si es apropiado para sus necesidades, especialmente si varios usuarios comparten dispositivos.

Los datos almacenados con SaveData están aislados de otras Power Apps por los reproductores de Power Apps. Los datos se almacenan en función del Id. de la aplicación, lo que aísla automáticamente el espacio de nombres SaveData entre Power Apps.

El sistema operativo y el navegador son responsables de aislar los datos entre Power Apps y otras aplicaciones en un dispositivo y con sitios web. Por ejemplo, el sistema operativo es responsable de aislar los datos almacenados en Microsoft Outlook de los datos almacenados en Power Apps y también de aislar esos datos de sitios web como Bing.com o PowerApps.com. Las funciones integradas del espacio aislado de la aplicación del sistema operativo se utilizan para el almacenamiento de SaveData que, por lo general, no es accesible para el usuario o está oculto para él.

Cuando se usa la misma aplicación, el sistema operativo y el navegador también son responsables de aislar los datos entre usuarios de diferentes niveles de sistema operativo. Por ejemplo, si dos usuarios diferentes comparten un equipo y usan dos credenciales de inicio de sesión de Windows diferentes, el sistema operativo es responsable de aislar los datos entre los dos usuarios de Windows.

Los datos pueden o no estar aislados entre diferentes usuarios de Power Apps si el usuario del sistema operativo es el mismo. No todos los reproductores de Power Apps tratan esto de la misma manera. Por ejemplo, mientras inicia sesión como el mismo usuario de Windows, en el reproductor de Power Apps, el usuario cierra la sesión de Power Apps e inicia sesión como un usuario diferente de Power Apps. Los datos almacenados en una aplicación antes del cambio de usuario de Power Apps pueden ser accesibles para el segundo usuario de Power Apps en la misma aplicación. Los datos también pueden eliminarse y es posible que el primer usuario de Power Apps ya no pueda acceder a ellos. El comportamiento varía entre reproductores de Power Apps.

El dispositivo también puede cifrar los datos o usted puede usar una herramienta de administración de dispositivos móviles como Microsoft Intune. Los datos almacenados cuando se reproduce una aplicación en un navegador web no están encriptados.

Sintaxis

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

  • Collection: requerido. Colección para almacenar o cargar.
  • Nombre - Requerido. Nombre del almacenamiento. El nombre debe ser el mismo para guardar y cargar el mismo conjunto de datos. El espacio de nombres no se comparte con otras aplicaciones. Los nombres no deben contener ninguno de estos caracteres: *".?:\<>|/.
  • IgnoreNonexistentFile: opcional. Valor booleano que indica qué hacer si el archivo aún no existe. Utilice false (predeterminado) para devolver un error y true para suprimir el error.

ClearData( [Name] )

  • Name - Opcional. Nombre del almacenamiento guardado previamente con SaveData. Si Name no se proporciona, se borra todo el almacenamiento asociado con la aplicación.

Ejemplos

Fórmula Descripción Resultado
SaveData( LocalCache, "MyCache" ) Guarda la colección LocalCache para el dispositivo del usuario con el nombre "MyCache", adecuado para que LoadData lo recupere más tarde. Los datos se guardan en el host de la aplicación con el nombre "MyCache".
LoadData( LocalCache, "MyCache" ) Carga la colección LocalCache del dispositivo del usuario con el nombre "MyCache", previamente almacenada con una llamada a SaveData. Los datos se cargan desde el host de la aplicación con el nombre "MyCache".
ClearData( "MyCache" ) Borra el almacenamiento con el nombre "MyCache". Cualquier dato almacenado bajo este nombre ya no estará disponible a través de LoadData. Los datos se quitan del host de la aplicación con el nombre "MyCache".
ClearData() Borre todo el almacenamiento asociado con esta aplicación. Los datos almacenados por otras aplicaciones no se ven afectados. Todos los datos se eliminan del host de la aplicación.

Ejemplo simple fuera de línea

El siguiente ejemplo simple captura y almacena los nombres e imágenes de artículos cotidianos sin conexión. Almacena la información en el almacenamiento local del dispositivo para su uso posterior. Esto permite que la aplicación se cierre o que el dispositivo se reinicie sin perder datos.

Nota

Este ejemplo usa un control de cámara para capturar imágenes. Ya que SaveData está limitado a 1 MB de datos cuando se ejecuta en Teams o en un navegador web, este ejemplo no funcionará con más de unas pocas imágenes. Además, dependiendo de la cámara, es posible que no funcione ni siquiera con una imagen. Use un dispositivo para trabajar con este ejemplo completo o elimine el control de la cámara y la parte de imagen de este ejemplo para ejecutarlo en Teams o en un navegador web.

  1. Cree una aplicación de lienzo en blanco con un diseño de tableta. Para más detalles, lea Crear una aplicación a partir de una plantilla y seleccione Diseño de la tableta bajo Aplicación en blanco.

  2. Agregue un control Text input y un control Camera y organícelos aproximadamente como se muestra:

    Controles de entrada de texto y cámara agregados a una pantalla en blanco.

  3. Agregue un control Button.

  4. Haga doble clic en el control de botón para cambiar el texto del botón a Agregar elemento (o modifique la propiedad Text).

  5. Establezca la propiedad OnSelect del control de botón de esta fórmula, que agregará un elemento a nuestra colección:

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

    Control de botón agregado con el texto

  6. Agregue otro control Button.

  7. Haga doble clic en el control de botón para cambiar el texto del botón a Guardar datos (o modifique la propiedad Text).

  8. Establezca la propiedad OnSelect del control de botón de esta fórmula para guardar nuestra colección en el dispositivo local:

    SaveData( MyItems, "LocalSavedItems" )
    

    Control de botón agregado con el texto

    Es tentador probar el botón, ya que no afecta a nada. Pero solo verá un error mientras está creando en un navegador web. Guarde la aplicación primero y ábrala en un dispositivo antes de seguir los siguientes pasos para probar esta fórmula:

  9. Agregue un tercer control Button.

  10. Haga doble clic en el control de botón para cambiar el texto del botón a Cargar datos (o modifique la propiedad Text).

  11. Establezca la propiedad OnSelect del control de botón de esta fórmula para cargar nuestra colección desde el dispositivo local:

    LoadData( MyItems, "LocalSavedItems" )
    

    Control de botón agregado con el texto

  12. Agregue un control Gallery con un diseño vertical que incluye una imagen y áreas de texto:

    Selección de variedad de galería,

  13. Cuando se le solicite, seleccione la colección MyItems como origen de datos para esta galería. Esto establecerá la propiedad Items del control Gallery en esta fórmula:

    Selección de galería de origen de datos. El control de imagen en la plantilla de la galería debe usar como propiedad Image a ThisItem.Picture de manera predeterminada y los controles de etiqueta deben usar de manera predeterminada ThisItem.Item como propiedades de Text. Verifique estas fórmulas si después de agregar elementos en los siguientes pasos no ve nada en la galería.

  14. Coloque el control a la derecha de los otros controles:

    Galería reposicionada a la derecha de la pantalla.

  15. Guarde la aplicación. Si es la primera vez que se guarda, no hay necesidad de publicarla. Si no es la primera vez, publique la aplicación después de guardarla.

  16. Abra la aplicación en un dispositivo móvil, por ejemplo un teléfono o una tableta. No se puede usar SaveData y LoadData en Studio o en un navegador web. Actualice su lista de aplicaciones si no la ve de inmediato, ya que la aplicación puede tardar unos segundos en aparecer en el dispositivo. Cerrar sesión y volver a iniciar sesión en la cuenta también puede ayudar.

    Aplicación en ejecución sin elementos agregados. Una vez que se haya descargado su aplicación, puede desconectarse de la red y ejecutarla sin conexión.

  17. Escriba el nombre y tome una foto de un elemento.

  18. Seleccione el botón Add Item. Vuelva a agregar elementos un par de veces para cargar su colección.

    Aplicación que se ejecuta con tres elementos agregados.

  19. Seleccione el botón Guardar datos. Esto guardará los datos de su colección en su dispositivo local.

  20. Cierre la aplicación. Su colección en memoria se perderá, incluidos todos los nombres de los elementos y las imágenes, pero aún estarán allí en el almacenamiento del dispositivo.

  21. Inicie la aplicación de nuevo. La colección en memoria volverá a aparecer como vacía en la galería.

    Aplicación de nuevo en ejecución sin elementos agregados.

  22. Seleccione el botón Cargar datos. La colección se llenará de nuevo con los datos almacenados en su dispositivo y sus elementos volverán a estar en la galería. La colección estaba vacía antes de que este botón llamase a la función LoadData; no había necesidad de llamar a Collect o ClearCollect antes de cargar los datos del almacenamiento.

    Aplicación que se ejecuta con tres elementos restaurados después de llamar a la función LoadData.

  23. Seleccione el botón Cargar datos de nuevo. Los datos almacenados se agregarán al final de la colección y aparecerá una barra de desplazamiento en la galería. Si desea reemplazar en lugar de agregar, use la función Clear primero para limpiar la colección antes de llamar a la función LoadData.

    Aplicación que se ejecuta con seis elementos restaurados después de llamar dos veces a la función LoadData.

Ejemplo fuera de línea más avanzado

Para un ejemplo detallado, vea el artículo sobre capacidades sin conexión simples.