Makros/Python-Leitfaden/Python-Aufruf aus Basic
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
Sagen wir, Sie haben ein Python-Skript in dem Benutzer spezifischen Skript-Verzeichnis, wie in der Einführung erwähnt:
Auf Linux wäre dies /home/USER/.config/libreoffice/4/user/Scripts/python. Inhalt einer Datei mit dem Namen utcNow.py in dem Verzeichnis:
from datetime import datetime
def utcNow():
return datetime.utcnow().strftime("%Y-%m-%d %H:%M")
g_exportedScripts = (utcNow,)
Nun wollen Sie diese Funktion aus Basic verwenden. Sie können open
▸ ▸ ▸ öffnen und Ihr Dokument auswählen. Erstellen Sie ein neues Modul, markieren es und wählen "Bearbeiten" (falls sich nicht bereits der Bearbeitungsmodus geöffnet hat). Dann können Sie Folgendes einfügen: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
Die Funktion UtcNow gibt den Basic-String zurück, der von der Python-Funktion zurückgegeben wird. Beachten Sie, wie der Aufruf von getScript den Dateinamen des Python-Skripts, den Funktionsnamen (nicht notwendigerweise derselbe!) und den Speicherort (user) angibt. Andere mögliche Einstellwerte sind in der Scripting Framework URI Specification beschrieben.
Wenn Sie es nicht schaffen, dass Basic das Skript findet, versuchen Sie LibreOffice mit der Umgebungsvariablen PYSCRIPT_LOG_LEVEL=DEBUG PYSCRIPT_LOG_STDOUT=1 zu starten. Auf diesem Weg werden Sie herausfinden, wo LibreOffice auf der Suche ist.