Tutorial: compartir datos y eventos entre funciones personalizadas y el panel de tareas de Excel

Use un entorno de ejecución compartido para compartir datos globales entre las funciones personalizadas y el panel de tareas del complemento de Excel. En este tutorial, agregará funciones y controles de panel de tareas que leen y actualizan la misma variable.

Requisitos previos

Complete el tutorial de funciones personalizadas de Excel y use el complemento que ha creado. El proyecto debe usar las funciones personalizadas de Excel mediante un tipo de proyecto en tiempo de ejecución compartido y un tipo de script de JavaScript .

Compartir el estado entre una función personalizada y un código de panel de tareas

Creación de funciones personalizadas para obtener o almacenar el estado compartido

  1. En Visual Studio Code, abra src/functions/functions.js.

  2. Al principio del archivo, agregue el código siguiente. Este código inicializa una variable global denominada sharedState.

    window.sharedState = "empty";
    
  3. Agregue el código siguiente para crear una función personalizada que almacene valores en sharedState.

    /**
     * Saves a string value to shared state with the task pane
     * @customfunction STOREVALUE
     * @param {string} value String to write to shared state with task pane.
     * @return {string} A success value
     */
    function storeValue(sharedValue) {
      window.sharedState = sharedValue;
      return "value stored";
    }
    
  4. Agregue el código siguiente para crear una función personalizada que obtenga el valor actual de sharedState.

    /**
     * Gets a string value from shared state with the task pane
     * @customfunction GETVALUE
     * @returns {string} String value of the shared state with task pane.
     */
    function getValue() {
      return window.sharedState;
    }
    
  5. Guarde el archivo.

Creación de controles del panel de tareas para trabajar con datos globales

  1. Abra src/taskpane/taskpane.html.

  2. Después del elemento de cierre </main> , agregue el siguiente código HTML para crear controles que almacenen y recuperen datos globales.

    <ol>
      <li>
        Enter a value to send to the custom function and select
        <strong>Store</strong>.
      </li>
      <li>
        Enter <strong>=CONTOSO.GETVALUE()</strong> into a cell to retrieve it.
      </li>
      <li>
        To send data to the task pane, in a cell, enter
        <strong>=CONTOSO.STOREVALUE("new value")</strong>
      </li>
      <li>Select <strong>Get</strong> to display the value in the task pane.</li>
    </ol>
    
    <p>Store new value to shared state</p>
    <div>
      <input type="text" id="storeBox" />
      <button onclick="storeSharedValue()">Store</button>
    </div>
    
    <p>Get shared state value</p>
    <div>
      <input type="text" id="getBox" />
      <button onclick="getSharedValue()">Get</button>
    </div>
    
  3. Antes del elemento de cierre </body> , agregue el siguiente script para controlar los eventos de botón Store y Get .

    <script>
      function storeSharedValue() {
        let sharedValue = document.getElementById('storeBox').value;
        window.sharedState = sharedValue;
      }
    
      function getSharedValue() {
        document.getElementById('getBox').value = window.sharedState;
      }
    </script>
    
  4. Guarde el archivo.

  5. Cree el proyecto.

npm run build

Probar el uso compartido de datos entre las funciones personalizadas y el panel de tareas

  1. Inicie el proyecto.
npm run start
  1. En el panel de tareas, escriba un valor y, a continuación, seleccione Almacenar.
  2. En una celda de Excel, escriba =CONTOSO.GETVALUE() para recuperar el mismo valor.
  3. En otra celda, escriba =CONTOSO.STOREVALUE("new value") para actualizar el valor compartido.
  4. En el panel de tareas, seleccione Obtener para mostrar el valor actualizado.

Nota:

Un entorno de ejecución compartido también permite que las funciones personalizadas llamen a algunas API de Office. Para obtener más información, vea Llamar a las API de Microsoft Excel desde una función personalizada.

Cuando esté listo para detener el servidor de desarrollo y desinstalar el complemento, ejecute el siguiente comando.

npm run stop

Vea también