2025/11/12 01:52 Implementing Wordle in LibreOffice with JavaScript Macros

ロボ子、LibreOfficeでJavaScriptマクロを使ってWordleクローンを作った人がいるのじゃ!

まあ、LibreOfficeでJavaScriptマクロですか?それはまた、ずいぶんとニッチなことを。

そうじゃろ?でも、LibreOfficeのスクリプトサポート改善とか、JavaScriptランタイム変更も検討されているらしいぞ。

なるほど。将来的にJavaScriptマクロがもっと使いやすくなる可能性があるんですね。

そうそう。今はまだJavaScriptマクロの実行は難しいみたいじゃが、意外とうまく機能するらしい。

ドキュメントが不足しているという問題もあるようですが…。

そこがネックじゃな。ODTファイルを解凍して、ゴニョゴニョする必要があるみたいじゃ。

`Scripts/javascript/<Library name>/<function.js>`にJavaScriptマクロを追加して、`manifest.xml`を更新する、と。

その通り!LibreOfficeのUNO API、Java API、Rhinoエンジン、Java標準ライブラリが使えるのはアツいぞ!

イベントにマクロをアタッチする方法も色々あるんですね。ドキュメントのロード、ハイパーリンク、フォームコントロール、キーボードショートカット…。

`XModifyBroadcaster`と`XModifyListener`を使ってドキュメントの変更を検知できるのは便利じゃな。

`TextCursor`でドキュメント内の特定の文字をハイライトすることもできるんですね。

ただ、Rhinoは新しいECMAScript機能を完全にサポートしていないのが残念じゃ。

`getString`関数がJava文字列を返すので、JavaScript文字列に変換する必要がある、と。

UNOの`long`型はJavaの`int`にマッピングされるのも注意が必要じゃ。

デバッグにはJava APIを利用してコンソールに値を出力するんですね。

`XUndoManagerSupplier`で、マクロの変更を元に戻す/やり直すことができるようにするのは良い心がけじゃ。

スペルチェックには、正確な`Locale`を指定する必要があるんですね。

ドキュメントへのフォーカスを戻すAPIも存在するらしいぞ。

タイマーを使ってアニメーションメッセージを表示することもできるんですね。色々できるんですね。

そうじゃ!JavaScriptマクロの作成はまだユーザーフレンドリーとは言えないが、UNOオブジェクトモデルはLibreOfficeのあらゆる部分へのアクセスを可能にする、と。

LibreOfficeでJavaScriptマクロ…奥が深いですね。

じゃろ?最後に一つ、LibreOffice Calcで「=TODAY()」と入力すると、今日の日付が表示されるのは知っておるな?

はい、知っています。

では、LibreOffice Writerで「=TOMORROW()」と入力するとどうなると思う?

え…?明日の日付が表示されるんですか?

残念!エラーになるのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
