Macros/Guía de Python/Introducción
TDF LibreOffice en español Document Liberation Blogs comunitarios Weblate Nextcloud Redmine Preguntas y respuestas Donar
Introducción
¿Qué es PyUNO?
LibreOffice permite a los usuarios escribir macros en varios lenguajes de programación interpretados, uno de los cuales es Python. PyUNO es el componente que da acceso a la interfaz de programación de la aplicación (API, en adelante, por sus siglas en inglés: Applicación Programming Interfaz) de LibreOffice con Python.
Instalación
Abre LibreOffice Writer y ve al menú
▸ ▸ ▸ . Si no ves esta opción, probablemente no tengas instalado el soporte para macros Python.En algunos sistemas operativos, como Ubuntu 18.04 LTS, quizás sea necesario instalar un paquete .deb adicional. Este paquete es libreoffice-script-provider-python y contiene archivos necesarios como scriptproviderforpython.rdb (metadatos con XML) y pythonscript.py (infraestructura para Python).
- En Ubuntu 18.04+ ejecute
sudo apt install libreoffice-script-provider-python
Verificación de soporte para macros con Python
Siga la siguiente secuencia dentro del cuadro de diálogo Macros de Pyhon.
- Abra un nuevo documento en Writer.
- Seleccione el menú ▸ ▸ . Se abrirá el diálogo Selector de macros
- En el panel izquierdo Biblioteca seleccione ▸ .
- En el panel derecho Nombre de la macro aparecerán varias opciones. Seleccione la macro HelloWorldPython.
- Pulse el botón Ejecutar
Si ve el siguiente resultado, entonces su sistema está preparado para ejecutar macros con Python.
¿Dónde se guardan las macros?
En la carpeta del perfil de USUARIO, las macros solo están disponibles para el USUARIO
Dependiendo del sistema operativo, la carpeta del perfil de usuario y la subcarpeta para macros estará en:
- GNU/Linux
/home/$USER/.config/libreoffice/4/user/Scripts/python
- Windows
%APPDATA%\LibreOffice\4\user\Scripts\python
- OSX
~/Library/Application Support/LibreOffice/4/user/Scripts/python/
En la carpeta del programa, las macros están disponibles para todos los usuarios
- GNU/Linux
/usr/lib/libreoffice/share/Scripts/python/
- Windows
C:/Programas../LIbreOffice/...
- OSX
/../..
Estas son las rutas predeterminadas. En instalaciones hechas a medida, las rutas pueden ser diferentes. Si las carpetas no existen, debe crearlas, respetando la capitalización de las dos últimas: Script
y python
.
Dentro de un documento ODF
Cualquier documento ODF en realidad es un archivo comprimido ZIP. Tan solo cambiando la extensión del mismo es posible mirar o extraer todo el contenido, como se hace con otros archivos ZIP.
1. En la raíz del archivo comprimido, cree una nueva carpeta llamada Scripts/python
(python
dentro de Scripts
) y copie cualquier archivo Python, por ejemplo, mimacro.py
.
Debe verse la estructura del archivo comprimido así:
midocumentoODF | ... ├── META-INF │ └── manifest.xml ├── Scripts │ └── python │ └── mimacro.py ...
2. Edite en un editor de textos el archivo manifest.xml
que está dentro de la carpeta META-INF
, y agregue las siguientes líneas, justo antes de la etiqueta de cierre </manifest:manifest>
<manifest:file-entry manifest:full-path="Scripts/python/mimacro.py" manifest:media-type="" /> <manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" /> <manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" />
El archivo completo debe verse similar a esto (en este ejemplo se usó un libro de cálculo de Calc, con extensión .ods
):
<?xml version="1.0" encoding="UTF-8"?> <manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"> <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/> <manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/> <manifest:file-entry manifest:full-path="settings.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="manifest.rdf" manifest:media-type="application/rdf+xml"/> <manifest:file-entry manifest:full-path="Configurations2/" manifest:media-type="application/vnd.sun.xml.ui.configuration"/> <manifest:file-entry manifest:full-path="meta.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="styles.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/> <manifest:file-entry manifest:full-path="Scripts/python/mimacro.py" manifest:media-type="" /> <manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" /> <manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" /> </manifest:manifest>
3. Ahora vuelva a comprimir todo el contenido de la carpeta donde descomprimió el archivo original.
Precaución No comprima la carpeta externa. Comprima solo el contenido de la carpeta.
4. Cambie la extensión nuevamente, de .zip
a .ods
(en este ejemplo)
Puede abrir el archivo en LibreOffice Calc y verá en la biblioteca la nueva macro que agregó.