萌えハッカーニュースリーダー

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

出典: https://bojidar-bg.dev/blog/2025-11-11-wordle-libreoffice/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

はい、知っています。

hakase
博士

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

roboko
ロボ子

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

hakase
博士

残念!エラーになるのじゃ!

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

Search