マクロ/Pythonガイド/BasicからPythonの呼び出し

    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 25% complete.
    Outdated translations are marked like this.
    Other languages:

    ⇐ Return to Index


    はじめにで述べたように、ユーザー固有のスクリプトディレクトリにPythonスクリプトがあるとします。

    Linuxの場合では、/home/USER/.config/libreoffice/4/user/Scripts/pythonになります。そのディレクトリにあるutcNow.pyというファイルの内容です。

    from datetime import datetime
    
    def utcNow():
        return datetime.utcnow().strftime("%Y-%m-%d %H:%M")
    
    g_exportedScripts = (utcNow,)

    さて、この関数をBasicから使いたいと思ってます。その場合は以下のようにすると良いでしょう。

    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

    UtcNowには、Pythonの関数が返すBasicの文字列が入ります。getScriptの呼び出しで、Pythonスクリプトのファイル名、関数名(必ずしも同じではありません!)、場所(user)を指定していることに注意してください。その他の設定は、スクリプティングフレームワークURI仕様にあります。

    Basicがスクリプトを見つけられない場合は、環境変数PYSCRIPT_LOG_LEVEL=DEBUG PYSCRIPT_LOG_STDOUT=1を指定してLibreOfficeを実行してみてください。そうすれば、LibreOfficeがどこを見ているかがわかります。

    ⇐ Return to Index