Jump to content

Macro - Guida a Python - Richiamare Python da Basic

From The Document Foundation Wiki
This page is a translated version of the page Macros/Python Guide/Calling Python from Basic and the translation is 100% complete.

⇐ Ritorna all'indice


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 Strumenti ▸ Macro ▸ Organizza Macro ▸ Basic..., 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.

⇐ Ritorna all'indice