ONLYOFFICEデスクトップエディターでプラグイン開発を有効にする方法
ONLYOFFICEデスクトップエディターでプラグイン開発を設定するには、ローカルの.pluginアーカイブをインストールし、ソースフォルダーをリンクし、開発者ツールを有効にして、変更をテストします。
はい。LibreOffice Calc は、LibreOffice プロセス内で Python コードをマクロとして実行できます。また、LibreOffice Basic マクロからも、LibreOffice のスクリプトフレームワークを介して Python 関数を呼び出すことができます。開いているスプレッドシートのセルを読み取ったり変更したりすることが目的であれば、プロセス内 Python マクロが最も簡単な出発点となります。既存の Basic マクロで、あるタスクを再利用可能な Python 関数に渡したい場合は、Basic から Python への呼び出しを使用してください。
これらの方法は、シェルコマンドで通常のシステムPythonスクリプトを起動する方法とは異なります。通常の外部Pythonプロセスは、Calcのドキュメントオブジェクトを自動的に取得しません。ワークブックにアクセスするには、LibreOffice経由でPythonマクロを実行するか、UNOを介して外部プロセスをLibreOfficeインスタンスに意図的に接続してください。
LibreOfficeは、スクリプトフレームワークを通じて複数のスクリプト言語をサポートしています。Pythonマクロでは、LibreOfficeはUNOコンテキストオブジェクトを提供し、スクリプトが現在のドキュメントとそのシートにアクセスできるようにします。Pythonマクロはモジュール内の関数であり.py、モジュールのg_exportedScriptsタプルはLibreOfficeが実行可能なマクロとして表示すべき関数を識別します。
Pythonマクロは、Calcのマクロメニューから単独で実行できます。Basicから呼び出す必要はありません。既にBasicマクロがあり、そこからPythonを呼び出したい場合は、LibreOfficeのスクリプトプロバイダ、またはより新しいScriptForgeSession.ExecutePythonScriptサービスを使用して、2つの言語を連携させることができます。
例えば、小さなスプレッドシートのクリーンアップツールは、Pythonマクロとして完全に記述できます。既存のBasicボタンが既にレポートを実行するようになっている場合は、そのボタンのマクロをそのまま使用し、レポートの合計を計算するPython関数を呼び出すようにします。
LibreOffice は、個人の Python スクリプトをユーザー プロファイルに、アプリケーション全体のスクリプトをインストール ディレクトリに、ドキュメント スクリプトをドキュメントに保存します。最初のテストでは、個人用スクリプトが便利です。なぜなら、同じユーザーが開いているどの LibreOffice ドキュメントからでも利用できるからです。ただし、ODS ファイルには含まれないため、他のユーザーがスプレッドシートと一緒に自動的にスクリプトを受け取ることはありません。
LibreOffice ヘルプの「Python スクリプトの構成と場所」で、お使いのシステムの個人用 Python スクリプトフォルダを探してください。一般的な場所は、%APPDATA%\LibreOffice\4\user\Scripts\pythonWindows と~/.config/libreoffice/4/user/Scripts/pythonLinux にあります。実際のプロファイルは異なる場合があるため、推測で別のプロファイルディレクトリを作成するのではなく、インストール時にドキュメントに記載されている場所を使用してください。
個人のPythonスクリプトフォルダにという名前のファイルを作成しcalc_tools.py、次の簡単な例を追加してください。
def double_a1(args=None):
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.getCurrentController().getActiveSheet()
source = sheet.getCellRangeByName("A1")
target = sheet.getCellRangeByName("B1")
target.setValue(source.getValue() * 2)
g_exportedScripts = (double_a1,)
これは、アクティブシートのセル A1 の数値を読み取り、その値の 2 倍を B1 に書き込みます。XSCRIPTCONTEXTは、実行時に LibreOffice Python マクロに渡されます。同じファイルが LibreOffice の外で起動された場合、通常の Python グローバル変数ではありません。パブリック関数は にリストされているg_exportedScriptsため、マクロセレクタに表示されます。
ファイルを保存してから、Calc を開くか、Calc に戻って、[ツール] > [マクロ] > [マクロの実行]を選択します。LibreOffice のバージョンやプラットフォームの翻訳によっては、メニューのラベルが単数形になる場合があります。[マイ マクロ] > [calc_tools] > [double_a1]を選択して実行します。まず A1 に数値を入力し、B1 に 2 倍の値が含まれていることを確認します。モジュールが表示されない場合は、ファイル拡張子が . であること.py、ファイルが正しいプロファイルの Python フォルダーにあること、および Python スクリプトのサポートがインストールされていることを確認してください。新しいモジュールを追加した後に LibreOffice を再起動すると、スクリプト リストが更新される場合があります。
BasicからPythonへの呼び出しを行うには、Pythonモジュールを個人用スクリプトフォルダに配置し、ScriptForgeのSessionサービスを介してその関数を呼び出します。この例では、Pythonで2つの値を加算し、その結果を現在のCalcシートのB1セルに書き込みます。
においてcalc_tools.py、関数を定義します。
def add_values(first, second):
return float(first) + float(second)
g_exportedScripts = (add_values,)
次に、CalcでBasicマクロを作成し、以下を使用します。
Sub RunPythonHelper()
Dim session As Object
Dim result As Variant
Dim sheet As Object
session = CreateScriptService("Session")
result = session.ExecutePythonScript( _
session.SCRIPTISPERSONAL, _
"calc_tools.py$add_values", _
12, 30)
sheet = ThisComponent.CurrentController.getActiveSheet()
sheet.getCellRangeByName("B1").setValue(result)
End Sub
Basicマクロセレクタから実行してくださいRunPythonHelper。呼び出しが成功すると、B1に42が表示されます。スクリプト参照は、 の形式に従いますmodule.py$function_name。サブフォルダーまたは別のストレージ場所にあるモジュールの場合は、そのScriptForgeバージョン用に文書化されている構文と場所定数を使用してください。引数と戻り値は、数値、文字列、単純なシーケンスなど、両方の言語で適切に表現できるデータ型にしてください。
CreateScriptService最新のLibreOfficeバージョンでは、ドキュメントに記載されているScriptForgeセッションヘルパーが利用できますが、古いバージョンや配布パッケージ版ではメニュー名やバンドルされているコンポーネントが異なる場合があります。このサービスが利用できない場合は、LibreOfficeのドキュメントに記載されているUNOスクリプトプロバイダメソッドを使用してくださいXScript。このメソッドは、スクリプトURIからを取得し、それを呼び出します。マクロの場所設定を変更せずに、コード断片を別の場所にコピーすることは避けてください。
| ストレージ | 最適なフィット感 | トレード・オフ |
|---|---|---|
| マクロ / ユーザープロフィール | ドキュメント間で再利用可能な独自のツール | スプレッドシートを送信しても自動的に含まれません |
| アプリケーションマクロ | 1つのインストール環境で複数のユーザー向けに管理されるスクリプト | 通常、インストールまたはメンテナンスには管理者権限が必要です。 |
| ドキュメントマクロ | 1つのドキュメントに関連付けられることを意図したコード | 受信者はマクロを許可する必要がある場合があります。対象のLibreOfficeバージョンで移植性とセキュリティ動作をテストしてください。 |
チームワークフローの場合は、個人用マクロを含むワークブックを作成する前に、受信者がコードを入手して信頼する方法を決定してください。Pythonロジックをスプレッドシートに添付する必要がある場合は、受信者が使用するLibreOfficeと同じバージョンで、ドキュメントのマクロ保存とセキュリティプロンプトをテストしてください。管理された展開の場合、管理者はユーザー向けにスクリプトをパッケージ化したり、組織の通常のソフトウェア制御の下で拡張機能を配布したりできます。
Scripts/pythonディレクトリに保存してください。g_exportedScripts。タプル構文には、1項目のタプルの場合は末尾のカンマが含まれていることを確認してください。XSCRIPTCONTEXTによって起動されたマクロに対しては存在しますが、同じファイルがシステムのpythonコマンドで起動された場合は存在しません。マクロランナーを使用するか、ドキュメントに記載されているUNO接続を設定してください。XSCRIPTCONTEXTインポートされたモジュールには渡されません。インポートされたモジュールがグローバルな情報を読み取ることを期待するのではなく、必要なドキュメントまたはシートオブジェクトをヘルパー関数に渡してください。スプレッドシートのコピーと既知の入力値を使用してテストしてください。Pythonマクロがランナーに表示されることを確認し、一度実行して、出力セルを手計算の結果と比較してください。BasicからPythonへの呼び出しの場合は、簡単な入力値を1つテストし、返された値が意図したシートに書き込まれることを確認してください。シートを削除したり、広範囲を上書きしたり、オペレーティングシステムコマンドを実行したりするスクリプトから始めることは避けてください。
テストが正常に動作したら、他のコンピュータにスクリプトをインストールする方法を決定し、必要なPythonライブラリやLibreOfficeのバージョンに関する前提条件を文書化してください。LibreOfficeにバンドルされているPython環境は、プロセス内マクロに使用されます。別のシステムPythonインタープリタ用にインストールされたパッケージは、LibreOfficeでは利用できない場合があります。別のインタープリタのパッケージが必要な場合は、外部プロセス/UNO方式を使用し、その接続を意図的に構成してください。
ONLYOFFICEデスクトップエディターでプラグイン開発を設定するには、ローカルの.pluginアーカイブをインストールし、ソースフォルダーをリンクし、開発者ツールを有効にして、変更をテストします。
CalcでPythonマクロを直接使用するタイミングや、LibreOffice BasicからPython関数を呼び出す方法を、UNOとScriptForgeの実践的な例を通して学びましょう。
Collabora Online CODEの「Unauthorized WOPI Host」エラーを修正するには、WOPIホスト名を一致させ、Dockerホストグループを設定し、Nextcloudの個別のIP許可リストを確認し、接続性を検証してください。
JWTシークレット、認証ヘッダー、Docker設定、プロキシの動作、コネクタの状態を確認することで、NextcloudにおけるONLYOFFICEの「トークンが無効です」エラーを修正します。
コールバック、内部URL、JWT、TLS、プロキシルーティング、ログ、ストレージを確認することで、NextcloudにおけるONLYOFFICEの「ドキュメントを保存できませんでした」エラーを修正します。
Collabora Onlineのソケット接続エラーを修正するには、26.04 WebSocketの変更点、プロキシルート、アップグレードヘッダー、タイムアウト、TLS、およびログを確認してください。
Collabora Onlineで多言語スペルチェックを有効にするには、サーバー辞書を追加し、言語コードを許可し、テキストに言語を割り当て、複数の言語を含む文書をテストします。
Calcデータ、名前付き画像プレースホルダー、およびBasicマクロを使用して、レコードごとに画像を挿入する信頼性の高いLibreOffice Writerメールマージを作成する方法を、トラブルシューティングと検証の手順とともに解説します。
WOPI、リバースプロキシ、TLS、DNS、WebSocket、およびサーバー間の接続可能性をチェックすることにより、Collabora Onlineのドキュメント接続障害を診断および修正します。
ONLYOFFICEデスクトップエディター(オフライン版)でPDFファイルを編集可能なDOCXファイルに変換します。「名前を付けて保存」の手順に従い、PDFファイルがスキャンされているか確認し、書式設定をチェックしてください。