Top > OOoPython > Macro

Python マクロ Edit

Python で OOo のマクロを書くための方法です。

メニューのツール - マクロ - マクロの管理 - Python を選択すると次のようなダイアログが開きます。

python-1.png

このダイアログでマクロを選択して実行できます。

マクロの実行 Edit

Python マクロは BeanShell、JavaScript のようにファイル単位での実行ではなく、def で定義した Python の関数単位で実行します。

たとえば、上記ダイアログで pytest ファイルには次の二つの関数があります。

  • getTypeClassByName
  • pytest

もちろん、ファイルの宣言部分は共有されます。

表示する関数を制限 Edit

ダイアログに実行できるように表示する関数を制限できます。内部で使用している関数を表示させたくないときに利用します。

.py ファイルの最後に次のように書きます。

g_exportedScripts = getTypeClassByName,pytest

表示したい関数をタプルで羅列します。

マクロの作成 Edit

現在は Python のマクロを実行する IDE が実装されていませんし、ファイルを自分で作成しなければいけません。

マイマクロ Edit

マイマクロに新しいマクロを作成するには、user/Scripts/python に .py ファイルを作成します (python ディレクトリが無ければ自分で作成してください)。

ドキュメントライブラリ Edit

ドキュメントに梱包されたマクロを作成するには、作成したマクロの .py ファイルをドキュメントの ZIP ファイルを解凍して入れあげなければいけません。

ドキュメントのアーカイブの最上部から Scripts/python ディレクトリを作成して .py ファイルをその中にいれます。

XSCRIPTCONTEXT Edit

XSCRIPTCONTEXT は OOo のフレームワークスクリプトで利用される変数です。この変数を介して Python と OOo の間でやり取りできます。この変数を利用するに際してとくにインポートする必要はありません。

コンポーネントコンテキスト Edit

まず最初にフレームワークスクリプトから必要とされるコンポーネントコンテキストへはこの XSCRIPTCONTEXT から次のようにします。

ctx = XSCRIPTCONTEXT.getComponentContext()

サービスマネージャ Edit

サービスをインスタンス化するために利用する com.sun.star.lang.XMultiComponentFactory インターフェースを取得します。

smgr = ctx.ServiceManager

デスクトップ Edit

ドキュメントを読み込む際などに利用する com.sun.star.frame.Desktop サービスを取得します。

desktop = XSCRIPTCONTEXT.getDesktop()

ドキュメント Edit

現在のドキュメントで作業するときに取得したいドキュメントオブジェクトは次のようにして取得します。

doc = XSCRIPTCONTEXT.getDocument()

import Edit

独自のファイルを import する必要があるときには注意が必要です。概要参照。

説明 Edit

定義した関数のコメントがマクロの実行ダイアログの説明に表示されます。

def hello():
    """Say hello."""
    pass

Attach file: filepython-1.png 393 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes