Coautoría en los complementos de Excel

Con la coautoría, varios usuarios pueden colaborar y editar el mismo libro de Excel de forma simultánea. Todos los coautores de un libro pueden ver los cambios de otro coautor en cuanto este guarda el libro. Para trabajar en coautoría en un libro de Excel, es necesario guardar el libro en OneDrive, OneDrive para la Empresa o SharePoint Online.

Importante

En Excel para Microsoft 365, observará Autoguardar en la esquina superior izquierda. Cuando Autoguardado está activado, los coautores verán sus cambios en tiempo real. Tenga en cuenta el impacto de este comportamiento en el diseño de su complemento de Excel. Los usuarios pueden desactivar Autoguardado con el botón de alternancia de la esquina superior izquierda de la ventana de Excel.

Información general sobre la coautoría

Al cambiar el contenido de un libro, Excel sincroniza automáticamente esos cambios con todos los coautores. Los coautores pueden cambiar el contenido de un libro, pero también puede hacerlo el código que se ejecute en un complemento de Excel. Por ejemplo, cuando se ejecuta el siguiente código JavaScript en un complemento de Office, el valor de un intervalo se establece en Contoso.

range.values = [['Contoso']];

Cuando se sincronice "Contoso" a todos los coautores, cualquier usuario o complemento que se ejecute en el mismo libro verá el nuevo valor del rango.

La coautoría solo sincroniza el contenido dentro del libro compartido. Los valores copiados del libro en las variables de JavaScript de un complemento de Excel no se sincronizan. Por ejemplo, si el complemento almacena el valor de una celda (como "Contoso") en una variable de JavaScript y, después, un coautor cambia el valor de la celda a "Ejemplo", después de la sincronización, todos los coautores verán "Ejemplo" en la celda. Pero el valor de la variable de JavaScript seguirá siendo "Contoso". Además, cuando varios coautores usan el mismo complemento, cada coautor tiene su propia copia de la variable, que no se sincroniza. Al usar variables que usen contenido del libro, asegúrese de comprobar los valores actualizados en el libro antes de usar la variable.

Usar eventos para administrar el estado en memoria del complemento

Los complementos de Excel pueden leer el contenido del libro (desde hojas de cálculo ocultas y un objeto de configuración) y, después, almacenarlo en estructuras de datos como variables. Después de copiar los valores originales en una de estas estructuras de datos, los coautores podrán actualizar el contenido original del libro. Esto quiere decir que los valores copiados en las estructuras de datos ya no estarán sincronizados con el contenido del libro. Al crear sus complementos, asegúrese de tener en cuenta esta separación del contenido del libro y los valores almacenados en estructuras de datos.

Por ejemplo, puede que quiera crear un complemento de contenido que muestre visualizaciones personalizadas. El estado de las visualizaciones personalizadas podría guardarse en una hoja de cálculo oculta. Cuando los coautores usan el mismo libro, puede producirse el siguiente escenario.

  • El usuario A abre el documento y las visualizaciones personalizadas se muestran en el libro. Las visualizaciones personalizadas leen datos de una hoja de cálculo oculta (por ejemplo, el color de las visualizaciones se establece en azul).
  • El usuario B abre el mismo documento y empieza a modificar las visualizaciones personalizadas. El usuario B establece el color de las visualizaciones personalizadas en naranja. El color naranja se guarda en la hoja de cálculo oculta.
  • La hoja de cálculo oculta del usuario A se actualiza con el nuevo valor de naranja.
  • Las visualizaciones personalizadas del usuario A siguen siendo azules.

Si quiere que las visualizaciones personalizadas del usuario A respondan a los cambios realizados por los coautores en la hoja de cálculo oculta, use el evento BindingDataChanged. Esto garantiza que los cambios en el contenido del libro realizados por los coautores se reflejen en el estado del complemento.

Advertencias relacionadas con el uso de eventos con la coautoría

Como se describió anteriormente, en algunos escenarios, al desencadenar eventos para todos los coautores, se mejora la experiencia del usuario. Pero tenga en cuenta que, en algunos escenarios, este comportamiento puede producir experiencias del usuario deficientes.

Por ejemplo, en escenarios de validación de datos, es común mostrar la interfaz de usuario en respuesta a eventos. El evento BindingDataChanged descrito en la sección anterior se ejecuta cuando un usuario local o un coautor (remoto) cambia el contenido del libro en el enlace. Si el controlador de eventos del evento muestra la BindingDataChanged interfaz de usuario, los usuarios verán una interfaz de usuario que no está relacionada con los cambios en los que estaban trabajando en el libro, lo que da lugar a una experiencia de usuario deficiente. Evite mostrar la interfaz de usuario al usar eventos en el complemento.

Evitar conflictos de coautoría de filas de tabla

Es un problema conocido que las llamadas a la TableRowCollection.add API pueden provocar conflictos de coautoría. No se recomienda usar esa API si prevé que el complemento se ejecutará mientras otros usuarios editan el libro del complemento (en concreto, si están editando la tabla o cualquier intervalo debajo de la tabla). Las siguientes instrucciones deben ayudarle a evitar problemas con el TableRowCollection.add método (y evitar desencadenar la barra amarilla que Muestra Excel que pide a los usuarios que actualicen).

  1. Use Range.values en lugar de TableRowCollection.add. Al establecer los Range valores directamente debajo de la tabla, se expande automáticamente la tabla. De lo contrario, agregar filas de tabla a través de las Table API da lugar a conflictos de combinación para los usuarios de coautoría.
  2. No debe haber reglas de validación de datos aplicadas a las celdas situadas debajo de la tabla, a menos que la validación de datos se aplique a toda la columna.
  3. Si hay datos en la tabla, el complemento debe controlarlo antes de establecer el valor del intervalo. El uso Range.insert de para insertar una fila vacía moverá los datos y creará espacio para la tabla en expansión. De lo contrario, corre el riesgo de sobrescribir celdas debajo de la tabla.
  4. No se puede agregar una fila vacía a una tabla con Range.values. La tabla solo se expande automáticamente si los datos están presentes en las celdas directamente debajo de la tabla. Use datos temporales o columnas ocultas como solución alternativa para agregar una fila de tabla vacía.

Vea también