Cómo iniciarse con las macros de Python y con la ayuda de EasyMacro (1)
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 encargado de empaquetar el paquete 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 los directorios indicados en la tabla de arriba, es necesito crearlos, en especial, el último par de carpetas.
Ejecución de prueba con el entorno predeterminado
Muy bien, ya es posible escribir una macro Python. 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. FInalmente, el entorno de desarrollo que ofrece LibreOffice para facilitar las cosas es ScriptForge.
Ahora bien, 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 editor cualquiera y sencillo 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. También, consulte el capítulo 11 de la Guía de inicio rápido.
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 solo por las herramientas de depuración que nos ofrece, su uso está plenamente justificado. EasyMacro es una biblioteca con 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 (usa el estilo de codifcación adecuado de Python; por limitaciones de WordPress, no he podido presentar el código estilísticamente de manera correcta):
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:
APSO
Instalación y puesta a punto
¿Necesitamos instalar alguna otra extensión?
- Si usamos la extensión APSO (https://extensions.libreoffice.org/en/extensions/show/apso-alternative-script-organizer-for-python) para depurar nuestro código, se recomienda instalar también las extensiones MRI (http://extensions.openoffice.org/en/project/MRI) y Xray (http://www.openoffice.org/fr/Documentation/Basic/).
Recursos de aprendizaje:
- Descubriendo Python para LibreOffice: https://wiki.documentfoundation.org/Macros/Python_Guide/es
- Diseño y desarrollo de aplicaciones con LibreOffice en Python: https://wiki.documentfoundation.org/Macros/Python_Design_Guide/es
- Ayuda con las macros Python en LibreOffice: https://help.libreoffice.org/latest/es/text/sbasic/python/main0000.html?DbPAR=BASIC
- Cómo usar ScriptForge para crear macros Python más fácilmente: Python scripts in LibreOffice Calc using the ScriptForge library – LibreOffice Conference 2021 – Presenta: Rafael Lima [aunque el vídeo está en inglés, se pueden activar los subtítulos generados automáticamente]
Referencias:
[2] https://help.libreoffice.org/latest/es/text/sbasic/shared/03/lib_ScriptForge.html?DbPAR=BASIC