Macro - Guida a Python - Richiamare Python da Basic
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Supponete di avere, nella cartella specifica che contiene gli script dell'utente, uno script in Python. Come precisato nell'Introduzione:
In Linux, sarà /home/USER/.config/libreoffice/4/user/Scripts/python. I contenuti del file denominato utcNow.py che si trova in quella cartella sono:
from datetime import datetime
def utcNow():
return datetime.utcnow().strftime("%Y-%m-%d %H:%M")
g_exportedScripts = (utcNow,)
A questo punto vorreste usare questa funzione in Basic. Potete aprire
▸ ▸ ▸ , selezionare il vostro documento, creare un nuovo modulo, selezionarlo e scegliere "Modifica". Quindi potete inserire:Function UtcNow
oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript("vnd.sun.star.script:utcNow.py$utcNow?language=Python&location=user")
UtcNow = oScript.invoke(array(), array(), array())
End Function
La funzione UtcNow restituisce in Basic la stringa restituita dalla funzione in Python. Notate come la chiamata di getScript specifica il nome del file dello script in Python, il nome della funzione (che non è necessariamente lo stesso!) ed il percorso (user). Trovate le altre impostazioni possibili nelle Specifiche degli URI del Framework di Scripting.
Se non riuscite a far si che Basic trovi lo script, provate ad eseguire LibreOffice con le variabili di ambiente: PYSCRIPT_LOG_LEVEL=DEBUG PYSCRIPT_LOG_STDOUT=1. In questo modo potrete vedere dove LibreOffice lo sta cercando.