Macros/Python Guide/Calling Python from Basic/es

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:

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 el uso de mayúsculas diferentes en el 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 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.