Jump to content

マクロ/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 100% complete.

⇐ 目次に戻る


はじめにで述べたように、ユーザー固有のスクリプトディレクトリに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 からこの機能を使用します。ツール ▸ マクロ ▸ マクロの管理 ▸ 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)を指定していることに注意してください。その他の設定は、Scripting Framework URI Specification にあります。

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

⇐ 目次に戻る