Cómo iniciarse con las macros de Python y con la ayuda de EasyMacro

Puesta a punto del entorno de trabajo

NOTAS IMPORTANTES:

1.

Si usas Arch o alguna distro derivada de Arch, te recomiendo encarecidamente que uses la versión Flatpak de LibreOffice. Este empaquetamiento es el único que he encontrado —a la fecha— que respeta todas las características de LibreOffice, incluidos el Generador de informes y las funcionalidades para macros Python. Otros empaquetamientos vienen defectuosas en cuanto a la implementación de una u otra funcionalidad. Y como esta deficiencia es resultado de la arbitraria decisión del empaquetador de Arch para LibreOffice (y es solo su decisión), pues mejor ni complicarse.

2.

Por otro lado, ya que la ruta necesaria para el almacenamiento de las macros[1], según tu sistema operativo, es:

Linux Ruta
Tu usuario ~/.config/libreoffice/4/user/Scripts/python
Todos los usuarios /usr/lib64/libreoffice/share/Scripts/python
Windows Ruta
Tu usuario C:\Users\<tuUsuario>\AppData\Roaming\LibreOffice\4\user\Scripts\python
Todos los usuarios %APPDATA%\LibreOffice\4\user\Scripts\python
macOS Ruta
Tu usuario /Users/<tuUsuario>/Library/Application\ Support/LibreOffice/4/user/Scripts/python
Todos los usuarios

…entonces, si la ruta de configuración de LibreOffice que te proporciona el empaquetado (flatpak, AppImage, snap) no coincide con la que se indica arriba en la tabla, debes crear un enlace simbólico. Por ejemplo, flatpak me da esta ruta:

/home/tuUsuario/.var/app/org.libreoffice.LibreOffice/config/libreoffice/4/user/Scripts/python/pythonpath

Para que mis macros fueran visibles en LibreOffice con flatpak, tuve que hacer lo siguiente:

ln -s /home/tuUsuario/.var/app/org.libreoffice.LibreOffice/config/libreoffice  /home/tuUsuario/.config/

Si no existen, es necesito crear un par de carpetas dentro de este último directorio:

Ejecución de prueba con el entorno predeterminado

Muy bien, ya es posible escribir una macro Python y, después de guardarla en:

/home/tuUsuario/.config/libreoffice/4/user/Scripts/python/

…podrás ejecutarla en LibreOffice desde el menú: Herramientas>Macros>Ejecutar macro. Busca tu macro dentro de la biblioteca: Mis Macros

…y pulsa en el nombre que corresponda en la lista: Nombre de macro y haz clic en el botón Ejecutar. Si el botón Ejecutar aparece gris (es decir, está deshabilitado), revisa que los errores de sintaxis en tu macro.

Personalización del entorno de trabajo

En estricta regla, no es necesario hacer nada más para escribir las macros Python en un editor externo y luego guardarlas en las rutas mencionadas en el primer párrafo. Sin embargo, existen algunas bibliotecas de funciones o extensiones que facilitan mucho la creación de macros Python para LibreOffice. Una de ellas es EasyMacro, creada por Mauricio Baeza Servín, alias ElMau. Otra útil extensión es APSO.

El desarrollo con Python para LibreOffice abarca diversas maneras de llevar a cabo el proyecto, dependiendo de la complejidad que tenga. Para macros que agregan funcionalidades sencillas, un entorno sencillo como el descrito arriba es suficiente. Para proyectos más complejos, se sugiere usar un editor de Python especializado y tener habilitada la consola (terminal). Estas diferencias se explican mejor en la Ayuda en línea: Ayuda con las macros en Python en LibreOffice.

ScriptForge

Las bibliotecas de ScriptForge[2] constituyen una amplia colección de recursos de programación para LibreOffice que pueden invocarse desde macros Python. A partir de la versión LibreOffice 7.2, la biblioteca ScriptForge viene incluida en nuestra suite ofimática favorita. La ventaja de ScriptForge es la de contar con una serie de funcionalidades, llamadas servicios, que nos alejan de la complejidad de UNO y de la API y nos facilitan el desarrollo de nuestras macros. Véase la Ayuda en línea sobre este tema: La biblioteca ScriptForge.

EasyMacro

Instalación de EasyMacro

Ahora bien, es de mucha ayuda instalar EasyMacro[3], una herramienta muy poderosa y sencilla a la vez que nos permitirá facilitará escribir código más conciso y mejor documentado. Ya nomás por las herramientas de depuración que nos ofrece, su uso está plenamente justificado. EasyMacro es una biblioteca de muchas funciones útiles.

Para poder incorporar en nuestras macros las diferentes funciones y clases de EasyMacro, es necesario que LibreOffice encuentre la ruta de esta biblioteca dentro de la ruta en la que encuentra los ejecutables de Python; o sea, en donde está la carpeta pythonpath. Entonces, sigue cuidadosamente los siguientes pasos:

1. Elige una carpeta donde guardarás esta biblioteca de funciones. Por ejemplo,

cd /home/tuUsuario/Public/macrosPython

2. Clona el repo fuente de la herramienta dentro de esta carpeta:

git clone https://git.cuates.net/elmau/easymacro

3. Muévete a la carpeta easymacro/source:

cd easymacro/source

Desde esta carpeta source selecciona la carpeta easymacro y cópiala dentro de la carpeta pythonpath de nuestra configuración de usuario (o dentro de la configuración general, para que esté disponible para todos los usuarios de nuestra computadora). Recuerda que en los párrafos de arriba mencionamos que estas dos carpetas python/pythonpath hay que crearlas, si no existen.

Es más recomendable hacer un enlace simbólico en lugar de hacer la copia de la carpeta easymacro/source/easymacro dentro de pythonpath:

ln -s /home/tuUsuario/Public/macrosPython/easymacro/source/easymacro /home/tuUsuario/.config/libreoffice/4/user/Scripts/python/pythonpath/

¡Listo!

Prueba de ejecución de EasyMacro

Crea una macro Python en tu editor de confianza con el siguiente contenido:

import easymacro as app
def main():
app.msgbox(app.INFO_DEBUG)
return

…y guárdala en la ruta que LibreOffice usa para encontrar las macros de Python, es decir, (en mi caso) en:

/home/tuUsuario/.config/libreoffice/4/user/Scripts/python/

Pon atención que pythonpath está dentro de la carpeta python. Si esta última no existe, deberás crearla.

Abre LibreOffice Calc y ejecuta tu nueva macro Python. Deberás ver una imagen similar a esta:

Texto resultante de ejecutar una macro Python en LibreOffice y que hace llamadas a funciones de EasyMacro. El texto proporciona información sobre la instalación de estas dos herramientas.

Si ves algo similar, ¡haz tenido éxito!

APSO

Instalación y puesta a punto

¿Necesitamos instalar alguna otra extensión?

Recursos de aprendizaje:


Referencias:

[1] https://www.debugpoint.com/first-python-macro-libreoffice/#Python_macro_files_location_and_user_profile

[2] https://help.libreoffice.org/latest/es/text/sbasic/shared/03/lib_ScriptForge.html?DbPAR=BASIC

[3] https://easymacro.cuates.net/install/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la Política de privacidad