マクロ/Pythonガイド/はじめに

    From The Document Foundation Wiki
    This page is a translated version of the page Macros/Python Guide/Introduction and the translation is 100% complete.


    目次に戻る


    はじめに

    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で新規に文書を作成します。メニューから ツール ▸ マクロ ▸ マクロを実行... を選択すると「マクロセレクタ−」ダイアログが開きます。ライブラリセクションからLibreOfficeのマクロ ▸ HelloWorldを選択し、マクロ名セクションからHelloWorldPythonを選択して、実行ボタンをクリックします。

    この結果が表示されれば、お使いのシステムでPythonマクロが実行できます。

    テスト用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圧縮してください。

    目次に戻る