Macros/Guía de Python/Llamadas a Python desde BASIC
Digamos que tiene un script (una macro) en la carpeta destinada a ellos en el perfil de usuario, como se mencionó en la Introducción de esta Guía de Python:
En Linux
La carpeta donde se almacenan las macros o scripts de Python en el perfil de usuario es /home/USER/.config/libreoffice/4/user/Scripts/python
.
Digamos que en esa carpeta se encuentra el archivo utcAhora.py
:
from datetime import datetime def utcAhora(): return datetime.utcnow().strftime("%Y-%m-%d %H:%M") g_exportedScripts = (utcAhora,)
Ahora, decide usar esta función en una macro con BASIC. Para ello puede hacer lo siguiente:
oScriptProvider = ThisComponent.getScriptProvider() oScript = oScriptProvider.getScript("vnd.sun.star.script:utcAhora.py$utcAhora?language=Python&location=user") UtcAhora = oScript.invoke(array(), array(), array())
La función UtcAhora
(note la capitalización diferente del nombre de la función en Python y en BASIC) contendría el texto en BASIC que devuelve la función Python. Observe cómo la llamada a getScript
especifica el nombre del script Python, el nombre de la función (¡no es necesariamente el mismo!) y la localización (user
).
Existen más ajustes que puede revisar en Scripting Framework URI Specification.
Si no puede conseguir que BASIC encuentre el script de Python, trate de ejecutar LibreOffice en la línea de comandos precedido por las variables de entorno PYSCRIPT_LOG_LEVEL=DEBUG
y PYSCRIPT_LOG_STDOUT=1
. De esa manera verá dónde está buscando LibreOffice.