Macro/Guida a Python/Richiamare Python da Basic

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

Other languages:
English • ‎italiano


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 usarre questa funzione in Basic. Potete farlo come segue:

oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript("vnd.sun.star.script:utcNow.py$utcNow?language=Python&location=user")
UtcNow = oScript.invoke(array(), array(), array())

UtcNow conterrà la stringa in Basic 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.