Top > OOoPython > Macro

*Python マクロ [#y8da6b03]

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

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

&ref(python-1.png,nolink);

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

**マクロの実行 [#cfd878d5]

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

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

もちろん、ファイルの宣言部分は共有されます。
***表示する関数を制限 [#v0e30911]

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

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

 g_exportedScripts = getTypeClassByName,pytest

表示したい関数をタプルで羅列します。
**マクロの作成 [#zf752e82]

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

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

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

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

**XSCRIPTCONTEXT [#s8ec8a5d]

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

***コンポーネントコンテキスト [#a3a6895f]

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

 ctx = XSCRIPTCONTEXT.getComponentContext()

***サービスマネージャ [#w7c546b2]

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

 smgr = ctx.ServiceManager

***デスクトップ [#s558e865]
ドキュメントを読み込む際などに利用する com.sun.star.frame.Desktop サービスを取得します。

 desktop = XSCRIPTCONTEXT.getDesktop()

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

 doc = XSCRIPTCONTEXT.getDocument()

***import [#hef8a76d]
独自のファイルを import する必要があるときには注意が必要です。[[概要>OOoPython/OverView#r82840b6]]参照。

** 説明 [#h5a7c29a]
定義した関数のコメントがマクロの実行ダイアログの説明に表示されます。
 def hello():
     """Say hello."""
     pass


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