Macro/Guida a Python/Introduzione
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Introduzione
Cos'è PyUNO?
LibreOffice consente agli utenti di scrivere delle macro in diversi linguaggi interpretati, uno di questi è Python. PyUNO è il componente che fornisce agli utenti l'accesso all'interfaccia di programmazione dell'applicazione (d'ora in poi API dall'acronimo inglese Application Programming Interface) di LibreOffice con Python.
Installazione
Su alcuni sistemi operativi, come Ubuntu 18.04 LTS, potrebbe essere necessario installae dei pacchetti di sistema aggiuntivi. Su Ubuntu, il pacchetto si chiama libreoffice-script-provider-python e contiene dei file come scriptproviderforpython.rdb (XML metadata) e pythonscript.py (l'infrastruttura Python).
- In Ubuntu 18.04 e successive
sudo apt install libreoffice-script-provider-python
Verificare se le macro in Python sono supportate
Aprite un nuovo documenti in Writer. Selezionate il menu
▸ ▸ , apparirà la finestra di dialogo "Seleziona Macro". Nella sezione selezionate ▸ , nella sezione selezionate e fate clic sul pulsante .Se visualizzate questo risultato, significa che il vostro sistema è in grado di eseguire le macro in Python.
Dove salvare le macro?
Non esiste uno strumento incorporato per modificare gli script in Python, perciò dovrete usare il vostro editor di testo. Ci sono 3 posti nei quali potete salvare il vostro codice.
Nella cartella del profilo UTENTE, le macro saranno disponibili solo per l'UTENTE
- GNU/Linux
/home/USER/.config/libreoffice/4/user/Scripts/python
- Windows
%APPDATA%\LibreOffice\4\user\Scripts\python
- macOS
~/Library/Application Support/LibreOffice/4/user/Scripts/python/
Nella cartella di LibreOffice, le macro saranno disponibili per tutti gli utenti
- GNU/Linux
/usr/lib/libreoffice/share/Scripts/python/
I percorsi sopra menzionati sono quelli predefiniti. In installazioni personalizzate potrebbero essere differenti. Se le cartelle non esistono, dovrete crearle, rispettando le lettere maiuscole e minuscole.
All'interno di un documento
- Qualsiasi file ODF, in realtà è un file ZIP, che potete estrarre normalmente come estraete questo tipo di file. Nella radice, create una cartella
Scripts/python/
e copiate al suo interno qualsiasi file in python, per esempio:mymacros.py
- Dovreste vedere questo:
myfile | ... ├── META-INF │ └── manifest.xml ├── Scripts │ └── python │ └── mymacros.py ...
- Modificate il file manifest.xml nella cartella META-INF ed aggiungete delle righe prima del tag </manifest:manifest> di chiusura
<manifest:file-entry manifest:full-path="Scripts/python/mymacros.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" />
- Il file finale dovrebbe avere il seguente aspetto:
<?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/mymacros.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>
- A questo punto comprimete nuovamente in zip il contenuto dell'intera cartella. Attenzione non comprimete la cartella esterna, ma il contenuto della cartella