マクロ/Pythonガイド/はじめに
< Macros | Python Guide
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
はじめに
PyUNOとは
LibreOfficeでは、マクロをいくつかのスクリプト言語で記述できますが、その中の1つがPythonです。PyUNOは、Pythonを使ってLibreOfficeのAPI(Application Programming Interface)にアクセスするためのコンポーネントです。
インストール
Ubuntu 18.04 LTSなどのOSでは、追加のパッケージをインストールの必要があります。Ubuntuでパッケージは、libreoffice-script-provider-pythonと呼ばれ、scriptproviderforpython.rdb (XMLメタデータ) や pythonscript.py (Pythonインフラストラクチャ) などのファイルが含まれています。
- Ubuntu 18.04以上の場合
sudo apt install libreoffice-script-provider-python
Pythonマクロが利用可能かをテストする
Writerで新規に文書を作成します。メニューから
▸ ▸ を選択すると「マクロセレクタ−」ダイアログが開きます。 セクションから ▸ を選択し、 セクションから を選択して、 ボタンをクリックします。この結果が表示されれば、お使いのシステムでPythonマクロが実行できます。
マクロはどこに保存されますか?
LibreOfficeには、Pythonスクリプト編集用の内蔵エディタがないのでエディタを用意する必要があります。マクロを置ける場所は3つあります。
ユーザープロファイルフォルダー/ユーザーのみが利用できるマクロ
- GNU/Linux
/home/USER/.config/libreoffice/4/user/Scripts/python
- Windows
%APPDATA%\LibreOffice\4\user\Scripts\python
- macOS
~/Library/Application Support/LibreOffice/4/user/Scripts/python/
LibreOfficeのディレクトリ/すべてのユーザーが利用できるマクロ
- GNU/Linux
/usr/lib/libreoffice/share/Scripts/python/
上のパスはデフォルトです。カスタムインストールでは、これらと異なる場合があります。フォルダが存在しない場合は、大文字と小文字を区別して作成の必要があります。
ドキュメント組み込みマクロ
- ODFファイルの実態はZIPファイルなので、ZIPファイルの展開と同じようにODFファイルを展開できます。ルートには
Scripts/python/
フォルダを作成します。そしてその中にmymacros.py
のようなpythonファイルをコピーします。- こちらも見てください
myfile | ... ├── META-INF │ └── manifest.xml ├── Scripts │ └── python │ └── mymacros.py ...
- META-INFフォルダにあるmanifest.xmlファイルを編集して、</manifest:manifest>の直前に以下の行を追加します。
<manifest:file-entry manifest:full-path="Scripts/python/mymacros.py" manifest:media-type="" />
<manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" />
<manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" />
- 最終的にファイルは以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0">
<manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>
<manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/>
<manifest:file-entry manifest:full-path="settings.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="manifest.rdf" manifest:media-type="application/rdf+xml"/>
<manifest:file-entry manifest:full-path="Configurations2/" manifest:media-type="application/vnd.sun.xml.ui.configuration"/>
<manifest:file-entry manifest:full-path="meta.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="styles.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="Scripts/python/mymacros.py" manifest:media-type="" />
<manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" />
<manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" />
</manifest:manifest>
- 再度、zipでフォルダーを圧縮してください。注意: フォルダーをzip圧縮するのではなく、フォルダーの中身をzip圧縮してください。