Macros/Guía de Python/Llamadas a Python desde 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 • ‎español • ‎italiano • ‎日本語


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.