Compartir a través de


Tiempo de ejecución solo de JavaScript para funciones personalizadas

Las funciones personalizadas que no usan un entorno de ejecución compartido se basan en un entorno de ejecución de solo JavaScript. Este tiempo de ejecución está optimizado para un cálculo rápido, pero tiene menos API disponibles.

Importante

Tenga en cuenta que las funciones personalizadas están disponibles en Excel en las siguientes plataformas.

  • Office en la web
  • Office en Windows
    • Suscripción a Microsoft 365
    • Retail perpetual Office 2016 y versiones posteriores
    • Office 2021 perpetuo/LTSC con licencia por volumen y versiones posteriores
  • Office en Mac

Las funciones personalizadas de Excel no se admiten actualmente en lo siguiente:

  • Office en iPad
  • versiones perpetuas con licencia por volumen de Office 2021 o versiones anteriores en Windows

Nota:

El manifiesto unificado para Microsoft 365 no admite actualmente proyectos de funciones personalizadas. Debe usar el manifiesto de solo complemento para proyectos de funciones personalizadas. Para obtener más información, vea Manifiesto de complementos de Office.

Nota:

Se recomienda usar funciones personalizadas con un entorno de ejecución compartido, a menos que tenga una razón específica para no usar un entorno de ejecución compartido. Para obtener más información sobre los tiempos de ejecución, vea Runtimes in Office Add-ins.

Este entorno de ejecución de solo JavaScript proporciona acceso a las API en el OfficeRuntime espacio de nombres que pueden usar las funciones personalizadas y el panel de tareas (que se ejecuta en un entorno de ejecución diferente) para almacenar datos.

Solicitud de datos externos

Dentro de una función personalizada, puede solicitar datos externos mediante el uso de una API como Fetch o mediante XmlHttpRequest (XHR), una API de web estándar que emite solicitudes HTTP para interactuar con los servidores.

Tenga en cuenta que las funciones personalizadas deben usar medidas de seguridad adicionales al crear XmlHttpRequests, lo que requiere la misma directiva de origen y CORS simple.

Una implementación simple de CORS no puede usar cookies y solo admite métodos simples (GET, HEAD, POST). CORS simple acepta encabezados simples con los nombres de campo Accept, Accept-Language, Content-Language. También puede usar un Content-Type encabezado en CORS simple, siempre que el tipo de contenido sea application/x-www-form-urlencoded, text/plaino multipart/form-data.

Almacenamiento y acceso a datos

Dentro de una función personalizada que no usa un entorno de ejecución compartido, puede almacenar y acceder a los datos mediante el objeto OfficeRuntime.storage . El Storage objeto es un sistema de almacenamiento de clave-valor persistente, sin cifrar, que proporciona una alternativa a localStorage, que no pueden usar las funciones personalizadas que usan el entorno de ejecución de solo JavaScript. El Storage objeto ofrece 10 MB de datos por dominio. Más de un complemento puede compartir dominios.

El Storage objeto es una solución de almacenamiento compartido, lo que significa que varias partes de un complemento pueden acceder a los mismos datos. Por ejemplo, los tokens para la autenticación de usuario pueden almacenarse en el Storage objeto porque se puede acceder a él mediante una función personalizada (mediante el entorno de ejecución solo javaScript) y un panel de tareas (mediante un entorno de ejecución de vista web completo). De forma similar, si dos complementos comparten el mismo dominio (por ejemplo, www.contoso.com/addin1, www.contoso.com/addin2), también se les permite compartir información de un lado a otro a través del Storage objeto . Tenga en cuenta que los complementos que tienen subdominios diferentes tendrán instancias diferentes de Storage (por ejemplo, subdomain.contoso.com/addin1, differentsubdomain.contoso.com/addin2).

Dado que el Storage objeto puede ser una ubicación compartida, es importante tener en cuenta que es posible invalidar los pares clave-valor.

Los métodos siguientes están disponibles en el Storage objeto .

  • getItem
  • getItems
  • setItem
  • setItems
  • removeItem
  • removeItems
  • getKeys

Nota:

No hay ningún método para borrar toda la información (como clear). En su lugar, deberá usar removeItems para quitar varias entradas a la vez.

Ejemplo de OfficeRuntime.storage

En el ejemplo de código siguiente se llama al OfficeRuntime.storage.setItem método para establecer una clave y un valor en storage.

function StoreValue(key, value) {

  return OfficeRuntime.storage.setItem(key, value).then(function (result) {
      return "Success: Item with key '" + key + "' saved to storage.";
  }, function (error) {
      return "Error: Unable to save item with key '" + key + "' to storage. " + error;
  });
}

Comparación con el tiempo de ejecución compartido

¿Necesita la integración de la interfaz de usuario o Office.js objetos y eventos? Mueva esas funciones a un entorno de ejecución compartido.

Pasos siguientes

Obtenga información sobre cómo depurar funciones personalizadas.

Vea también