Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se incluyen sugerencias, procedimientos recomendados e información del ecosistema de complementos de Office para nuevos desarrolladores de complementos de funciones personalizadas.
En el diagrama siguiente se muestra la interacción entre una función personalizada y los dos componentes principales implicados en los complementos de función personalizada: Excel y servicios externos.
Excel le permite integrar sus propias funciones personalizadas en la aplicación y ejecutarlas como funciones integradas.
El complemento de funciones personalizadas define la lógica de las funciones y cómo interactúan con las API de JavaScript de Excel y Office. Para obtener información sobre cómo crear un complemento de funciones personalizadas, consulte el tutorial de funciones personalizadas.
Un servicio externo es opcional. Puede proporcionar funcionalidades de complemento, como la importación de datos desde fuera del libro. El complemento de funciones personalizadas especifica cómo se incorporan los datos externos en el libro. Para más información, consulte Recepción y control de datos con funciones personalizadas.
Optimización de la eficacia de actualización de funciones personalizadas
En general, la actualización de funciones personalizadas sigue el patrón establecido de actualización en Excel. Cuando se desencadena el recálculo, Excel entra en un proceso de tres fases: construir un árbol de dependencias, construir una cadena de cálculo y, a continuación, volver a calcular las celdas. Para optimizar la eficacia de actualización en el complemento, tenga en cuenta el nivel de anidamiento dentro de las funciones personalizadas, el modo de cálculo de Excel y las limitaciones de las funciones volátiles.
Anidamiento en funciones personalizadas
Una función personalizada puede aceptar otra función personalizada como argumento, lo que convierte el argumento en una función personalizada anidada. El recálculo de la función personalizada externa depende del resultado de la función anidada, lo que conduce a un mayor consumo de tiempo con cada función anidada adicional. Minimice el número de niveles anidados en las funciones personalizadas para mejorar la eficacia de los cálculos. Los fragmentos de código siguientes muestran dos enfoques para agregar valores en el libro que generan salidas similares. La opción 1 usa una matriz para llamar a los valores como un único parámetro, mientras que la opción 2 llama a cada valor como un parámetro independiente, por lo que la opción 1 es más eficaz.
Opción 1: Aumentar la eficacia con un anidamiento limitado
Nota:
Este es el método recomendado. Usa una matriz para llamar a los valores como un único parámetro y evitar el anidamiento innecesario, por lo que es más eficaz que la opción 2.
/**
* Returns the sum of input numbers.
* @customfunction
*/
function Add(args: number[]): number {
let total = 0;
args.forEach(value => {
total += value;
});
return total;
}
Opción 2: Más anidamiento es ineficaz
Nota:
No se recomienda este enfoque. Las opciones 1 y 2 generan salidas similares, pero la opción 2 usa más parámetros y es menos eficaz.
/**
* Returns the sum of two numbers.
* @customfunction
*/
function Add(arg1: number, arg2: number): number {
return arg1 + arg2;
}
Modos de cálculo de Excel
Excel tiene tres modos de cálculo: automático, automático excepto tablas y manual. Para determinar qué modo de cálculo se ajusta mejor al diseño de la función personalizada, consulte la sección Modos de cálculo, Comandos, Recalculación selectiva y Tabla de datos del artículo principal Actualización de Excel .
Establezca el modo de cálculo del complemento con la enumeración Excel.CalculationMode en función del escenario. Tenga en cuenta que automatic
el modo de cálculo puede desencadenar el recálculo a menudo y reducir la eficacia del complemento.
Limitaciones de la función volátil
Las funciones personalizadas permiten crear sus propias funciones volátiles, de forma similar a las NOW
funciones y TODAY
en Excel. Durante el recálculo, Excel evalúa las celdas que contienen funciones volátiles y todas sus celdas dependientes. Como resultado, el uso de muchas funciones volátiles puede ralentizar el tiempo de actualización, por lo que limita el número de funciones volátiles del complemento para optimizar la eficacia. Para obtener más información, vea Funciones volátiles y no volátiles.
Enfoques de diseño para mejorar la eficiencia
Los complementos de funciones personalizadas permiten diseños flexibles, lo que significa que diferentes diseños de complementos pueden producir la misma salida para los usuarios finales.
Varios resultados
Puede devolver varios resultados de la función personalizada con varias funciones o con una función.
Para devolver varios resultados con una función, use una matriz dinámica. Este suele ser el enfoque recomendado porque las matrices dinámicas solo requieren actualizar una sola celda para desencadenar el recálculo de todos los resultados.
Tenga en cuenta que el uso de matrices dinámicas se vuelve menos eficaz cuanto mayor sea el conjunto de datos, ya que cada actualización procesa más datos. Para obtener más información sobre las matrices dinámicas en funciones personalizadas, consulte Devolución de varios resultados de la función personalizada.
Otra manera de devolver varios resultados es usar varias funciones y devolver un único resultado para cada función. Una ventaja de usar varias funciones es que el usuario final puede decidir con precisión qué fórmula quiere actualizar y, a continuación, desencadenar solo el recálculo de esa fórmula. Esto resulta especialmente útil cuando se basa en servicios externos que pueden responder lentamente.
Estructuras de datos complejas
Los tipos de datos son la mejor manera de controlar estructuras de datos complejas en complementos de funciones personalizadas. Los tipos de datos admiten errores de Excel y números con formato como dobles. Los tipos de datos también permiten diseñar tarjetas de valor de entidad, ampliando los datos de Excel más allá de la cuadrícula bidimensional.
Mejora de la experiencia del usuario de las llamadas a servicios externos
Las funciones personalizadas pueden capturar datos de ubicaciones remotas más allá del libro, como la web o un servidor. Para obtener más información sobre cómo capturar datos de un servicio externo, consulte Recepción y control de datos con funciones personalizadas. Para mantener la eficacia al llamar a servicios externos, considere la posibilidad de procesar por lotes llamadas externas, minimizar la duración del recorrido de ida y vuelta para cada llamada e incluir mensajes en el complemento para comunicar retrasos al usuario final.
Llamadas remotas a funciones personalizadas de Batch
Si las funciones personalizadas llaman a un servicio remoto, use un patrón de procesamiento por lotes para reducir el número de llamadas de red al servicio remoto. Para obtener más información, consulte Procesamiento por lotes de llamadas de función personalizadas para un servicio remoto.
Minimizar la duración del recorrido de ida y vuelta
Las conexiones de servicio remoto pueden tener un gran impacto en el rendimiento de las funciones personalizadas. Para reducir este impacto, use estas estrategias:
- El procesamiento intensivo del servidor debe controlarse de forma eficaz en el servidor remoto para acortar la latencia de un extremo a otro para una función personalizada. Por ejemplo, tenga la computación en paralelo diseñada en el servidor. Si el servicio se implementa en Azure, considere la posibilidad de optimizar mediante la informática de alto rendimiento en Azure.
- Reduzca el número de llamadas de servicio mediante la optimización del flujo del complemento. Por ejemplo, solo envíe las llamadas necesarias a un servicio remoto.
Mejora del rendimiento percibido por el usuario a través de la experiencia de usuario del complemento (UX)
Mientras una función personalizada llama a un servicio externo, la celda con la función personalizada muestra el error #BUSY! Si un retraso al llamar a un servicio externo es inevitable, considere la posibilidad de proporcionar mensajes a través del panel de tareas del complemento para explicar el retraso a los usuarios finales. Esta información ayuda a administrar sus expectativas. En la imagen siguiente se muestra un ejemplo.
Para obtener más información sobre cómo compartir datos entre una función personalizada y un panel de tareas, vea Compartir datos y eventos entre funciones personalizadas de Excel y el panel de tareas.
Para mostrar un mensaje en el panel de tareas del complemento que notifica a los usuarios un retraso, realice los siguientes cambios después de asegurarse de que el complemento usa un entorno de ejecución compartido.
En taskpane.js agregue una función que llame a la notificación.
export function showNotification(message){ const label = document.getElementById("item-subject"); label.innerHTML = message; }
En function.js, importe la
showNotification
función.export function showNotification(message){ const label = document.getElementById("item-subject"); label.innerHTML = message; }
En function.js, llame al
showNotification
ejecutar el cálculo que puede incluir un retraso.export async function longCalculation(param) { await Office.addin.showAsTaskpane(); showNotification("It may take some time as we prepare the data."); // Perform long operation // ... // ... return answer; }