Makros/Python-Leitfaden/Python-Aufruf aus Basic

    From The Document Foundation Wiki
    This page is a translated version of the page Macros/Python Guide/Calling Python from Basic and the translation is 100% complete.
    Other languages:

    Zurück zum Inhaltsverzeichnis


    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 Extras ▸ Makros ▸ Makros verwalten ▸ Basic... ö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.

    Zurück zum Inhaltsverzeichnis