選択したライターテキストをセクションパスワードで保護する
Writer文書の残りの部分はそのまま使用できるようにしつつ、特定の箇所を日常的な編集から保護する方法、そしてファイル暗号化がより適切な選択肢となる場合について学びましょう。
ターミナルから実行したPythonスクリプトがCalcで開いているスプレッドシートを読み取ったり変更したりできない場合は、おそらくLibreOfficeの外部で実行されています。CalcのPythonマクロはLibreOfficeプロセス内で実行する必要があります。LibreOfficeプロセス内では、LibreOfficeがアクティブなドキュメントコンテキストを提供します。スクリプトをユーザーのPythonスクリプトフォルダにモジュールとして保存し、関数をエクスポートしてg_exportedScripts、Calcのマクロダイアログから起動してください。
これは、開いているワークブックに関連付けられた小規模な自動化を行うための最も簡単な方法です。LibreOfficeの最新のPythonスクリプトヘルプでは、プロセス内マクロと個別に接続されたPythonスクリプトの両方について説明していますが、以下の手順ではプロセス内マクロの方法を使用します。
LibreOffice は、グローバル変数 `.` を介して、実行中の Python マクロに現在のドキュメントを公開しますXSCRIPTCONTEXT。通常のコマンドで起動されるスクリプトはpython別のプロセスであるため、グローバル変数 `.` は自動的には利用できません。スクリプトは LibreOffice と通信できますが、そのためには既に実行中の Office プロセスへの UNO 接続を設定する必要があります。最初のマクロの場合は、代わりに LibreOffice 内で関数を実行してください。
Pythonマクロはモジュール内の関数です.py。モジュールのg_exportedScriptsタプルによって、LibreOfficeがマクロリストに表示する関数が決定されます。これらの詳細は、LibreOfficeのPythonプログラミングリファレンスに記載されています。
ユーザーアカウントで開いているLibreOfficeドキュメントから実行できるスクリプトを作成したい場合は、個人用の「マイマクロ」%APPDATA%\LibreOffice\4\user\Scripts\pythonフォルダを使用してください。LibreOfficeでは、Windowsでは、$HOME/.config/libreoffice/4/user/Scripts/pythonLinuxおよびmacOSでは、このフォルダを次のように記述します。Scripts/pythonフォルダが存在しない場合は、作成してください。スクリプトの場所に関するリファレンスでは、アプリケーションマクロやドキュメントに埋め込まれたマクロなど、他のマクロコンテナについても説明しています。

ドキュメントマクロは特定のファイル内に保存され、そのドキュメントを開いている間のみアクセスできます。再利用可能な個人用ユーティリティとしては、「マイマクロ」の方が一般的に管理が容易です。LibreOfficeのアプリケーション全体のマクロフォルダは管理者権限が必要になる場合があるため、変更しないようにしてください。
プレーンテキストエディタを開き、hello_calc.py上記のフォルダ内にファイルを作成して、以下を追加します。
def hello_calc(*args):
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.Sheets[0]
sheet.getCellRangeByName("A1").setString("Hello from Python")
g_exportedScripts = (hello_calc,)
この関数は、現在マクロ呼び出しに接続されているドキュメントを取得し、その最初のシートを選択して、A1 に無害なテスト文字列を書き込みます。最後の行が重要です。エクスポートされたタプルがないと、この関数は実行可能なマクロとして表示されない可能性があります。ファイルを.py拡張子付きのプレーンテキストとして保存してください。リッチテキスト ドキュメントや拡張子が のファイルとして保存しないでください.py.txt。

LibreOffice はXSCRIPTCONTEXTマクロモジュールに変数を提供します。ただし、その変数はコードによってインポートされるモジュールに自動的に渡されるわけではないため、最初のテストは自己完結型にしてください。後で再利用可能な関数を他のモジュールに分割する場合は、LibreOffice のPython モジュールインポートに関するガイダンスに従ってください。
hello_calcマクロ名から選択します。同じ機能は、LibreOfficeがプロセス内Pythonスクリプトに推奨し、Pythonシェルも提供するAPSO拡張機能からも起動できます。ただし、ここで説明する基本的なマクロ実行フローにはAPSOは必要ありません。


広範なセキュリティ設定を変更するのではなく、以下のチェック項目を順番に実行してください。
Scripts/pythonパスにあり、.py拡張子が付いていて、スペルミスのないg_exportedScriptsタプルが含まれていることを確認してください。マクロダイアログを再度開きます。それでもLibreOfficeに新しく追加したファイルが表示されない場合は、LibreOfficeを閉じて再起動し、再度確認してください。(hello_calc,)、 。カンマは、これを1項目のPythonタプルにします。print()利用できません。上記のテストではA1セルに書き込まれるため、結果がシートに表示されます。対話型デバッグの場合、APSOのシェルが出力を表示します。自動化処理を端末、スケジューラ、または別のアプリケーションから開始する必要がある場合にのみ、外部プロセス方式を選択してください。LibreOfficeでは、パイプまたはソケットを使用してオフィスプロセスを開始し、UNOブリッジを介して接続する必要があります。通常のスタンドアロンスクリプトは、プロセス内Calcマクロとは同等ではありません。
「実行」をクリックした後、最初のシートのセルA1を確認してください。セルA1には「Hello from Python」と表示されているはずです。また、A1を選択すると、数式バーにも同じテキストが表示されるはずです。セルが変更されない場合は、目的のブックがアクティブになっていること、およびマクロが「マイ マクロ」から選択されていることを確認してください。この最小限のテストが成功したら、テスト用の書き込みを実際の計算式に置き換え、重要なデータに使用する前に、ブックのコピーでテストしてください。
Writer文書の残りの部分はそのまま使用できるようにしつつ、特定の箇所を日常的な編集から保護する方法、そしてファイル暗号化がより適切な選択肢となる場合について学びましょう。
Calc でテーマ、セルのフォントの色、塗りつぶし、条件付き書式設定を確認することで、見づらいスプレッドシートのテキストを修正できます。
Calcで計算値ではなく数式テキストが表示される理由を学び、表示モード、テキスト形式のセル、アポストロフィ、または古い結果を修正します。
Calcの受信者データと共有埋め込み画像を使用して、再利用可能なWriterの差し込み印刷を作成し、パーソナライズされた手紙をプレビューして保存します。
LibreOfficeのオプションの更新統計情報とクラッシュレポートのプロンプトをオフにしてから、設定内容と検証方法を確認してください。
Writerの正規表現パターンを使えば、置換前にプレビューを確認しながら、スペースの整理、構造化されたテキストの検索、名前の並べ替えを行うことができます。
Writerの双方向制御を有効にし、右から左への段落の流れを設定し、英語の単語や数字を損なうことなく、アラビア語やヘブライ語が混在するテキストをチェックします。
メトリックに対応したLinuxフォントをインストールするか、LibreOfficeの代替フォントをマッピングする。その際、Microsoftフォントのライセンスやレイアウトの違いにも留意する。
Writerで使用可能なテキストフィールド、チェックボックス、ドロップダウンリストを追加し、受信者が入力して保存できるPDFをエクスポートします。
LibreOffice Writerで作成したPDFファイル内の欠落または置換されたフォントを修正し、適切なエクスポートプロファイルを選択し、共有前に埋め込まれているフォントを確認してください。