あまり知られていませんが(というか、ほとんどのWordユーザーには関係のないことかもしれませんが)、WordでJavaScriptというプログラミング言語を使えるようになっています。
Wordでのプログラミングといえば、Wordマクロ(Word VBA)なのですが、Office 2013からWordでJavaScriptを動かせる環境が整っています。
このOffice 2013以降で動作するOfficeアドイン(かつては、Office用アプリと呼ばれていました)を開発するときにこのJavaScriptを用います。
このOfficeアドインはウェブ版のOffice製品でも動作します。これがVBAとの大きな違いですね。
この記事では、WordやExcelなどのOffice製品で使えるJavaScriptについて紹介します。
Office.jsとは、Office用JavaScriptライブラリ
冒頭での紹介の通り、Officeで使えるJavaScriptがあります。これは、Office.jsと呼ばれるJavaScriptライブラリのことです。
ライブラリの意味
プログラミング言語での「ライブラリ」は、
ある特定の機能を持ったコンピュータプログラムを他のプログラムから呼び出して利用できるように部品化し、そのようなプログラム部品を複数集めて一つのファイルに収納したもの
を意味します。
このファイルに格納されたプログラム部品とは、プログラムのコード(プログラム文)のことです。
汎用性のあるさまざまなプログラムのコードが一つのファイルに保存されています。
Word VBAのライブラリ例
私がWord VBAで作ったライブラリの機能を例に挙げると、以下のようなものがあります。
- 特定のキーワードを指定した蛍光ペンで着色する機能
- 特定のキーワードの出現頻度を数える機能
- 指定したExcelファイルの用語集から配列を作る機能
- ファイルの存在の有無を確認する機能(階層が深くても誤判定なし、OneDrive対応)
- テキストファイルを開く機能(さまざまな文字コードに対応)
これらは部品なのでプログラムの中で使います。
実務では、必要に応じてこのような部品を用いて特定の目的を持つプログラムを作ります。
ライブラリを用いてプログラム作成を効率化
たとえば、クライアント用に、複数あるNGワードを色分けして表示するチェックツールを開発する場合があります。
その場合には、上記の「特定のキーワードを指定した蛍光ペンで着色する機能」を使います。
この機能を用いて、このクライアントが用意したNGワードを別々の色で塗り分けるプログラムを作ります。
このNGワードを読み込むために、上記の「指定したExcelファイルの用語集から配列を作る機能」を使ってもいいでしょう。
そうすれば、Word VBAのコードを編集せずにNGワードの更新をできるようになります。
ライブラリには、このようにさまざまな用途で何度も使えるような便利な部品が用意されています。
これらの機能を、わざわざ最初から繰り返し作る必要はありません。
むしろ、このような機能をライブラリとして用意しておき、このライブラリを何度も再利用したほうがプログラム作成の効率が上がります。
Office用のJavaScriptライブラリとは
この記事で扱うOffice.jsは「Office製品のJavaScriptライブラリ」です。
JavaScriptライブラリなので、「JavaScriptというプログラミング言語で作られた、特定の機能を実行するためのプログラム部品をファイルに格納したもの」を意味します。
よって、Office.jsは「JavaScriptで書かれた、Office製品で使えるプログラム部品をまとめてファイルに格納したもの」を意味します。
そのため、Office.jsを使えば、Officeのリボン操作や、Officeのアプリケーションごとの操作ができるのです。
Office.jsの2種類のライブラリモデル
ライブラリモデルの違い
2022年3月現在、Office.jsのライブラリには2種類のモデル(「アプリケーション固有 API」と「共通API」)があます。
これら2つのAPIを総称してOffice JavaScript API と呼びます。
「API」という名称がつくためにわかりづらくなりますが、ライブラリの名称と理解しておけば問題ありません。
ライブラリのモデル名 | 説明 |
アプリケーション固有 API | それぞれのOfficeアプリケーションのオブジェクトを操作するためのAPI。型指定されたオブジェクトが提供される。VBAのように、オブジェクトのメソッドやプロパティを操作できる。
例:Word JavaScript API(Word用JavaScriptライブラリ) |
共通API | Office アプリケーションに共通した 機能(UI、ダイアログ、クライアント設定など)を操作できる。 |
(参考:API リファレンス ドキュメント、Office JavaScript API ライブラリへのアクセス)
Officeのバージョンとライブラリモデルの互換性
Office.jsはOffice 2013で導入されました。それ以降、Office.jsの操作対象が徐々に増えてきています。
現時点では、Word用のアプリケーション固有 APIであるWord JavaScript APIのバージョンは1.3(WordAPI 1.3)です。
新しいバージョンのAPIは、このAPIに対応していない古いバージョンのOfficeでは使えません。
たとえば、この最新版のWordAPI 1.3を用いて開発されたOfficeアドインは、永続版(売り切り版)のOffice 2019やOffice 2021で動作します。
これら永続版のOffice 2019/2021が、WordAPI 1.3に対応しているからです。
しかし、同じOfficeアドインであっても、永続版のOffice 2016では動かすことはできません。
永続版のOffice 2016はWordAPI 1.1にしか対応していないからです。
そのため、今後利用可能になる最新のOffice.jsの機能を使い続けるためには、サブスクリプション版のOffice、つまりMicrosoft 365(旧Office 365)が必要となります。
もしくは、WordAPI 1.3までの機能に限定してOfficeアドインを開発し、OfficeアドインをOffice 2019以降のバージョンで使えるようにするというのもありだと思います。
次の記事で、Office.jsの2種類のライブラリモデル(「アプリケーション固有 API」と「共通API」)について紹介します。
→ 【Officeアドイン】Wordで使えるJavaScript ~Office.js の紹介~②
関連記事
【Officeアドイン】文書内の最初のキーワードにジャンプするWord JavaScript API
【Officeアドイン】カーソル位置の次のキーワードにジャンプするWord JavaScript API