前回の記事「【Officeアドイン】Wordで使えるJavaScript ~Office.js の紹介~➀」の続きです。
この記事では、Office.jsの2種類のライブラリモデル(「アプリケーション固有 API」と「共通API」)について、Office.jsの進化を振り返りつつ紹介します。
<目次>
Office.jsの進化の歴史
Office 2013でOffice.jsを導入
Office.jsが導入された当時は、Office.jsにできる操作は限られていました。
当時はまだ上記の「アプリケーション固有API」が用意されていませんでした。
そのため、操作対象はカーソルでの選択範囲のテキストや限られたオブジェクトの限られた操作に限定されていました。
そして、これらのオブジェクトを操作する場合には、「バインド」という手続きをして操作対象のオブジェクトを設定する必要がありました。
また、Office 2013 のAPIではUIやダイアログ等の操作ができませんでした。
Office 2016でOffice.jsを2種類に区分
Office 2016で、「アプリケーション固有 API(Application-specific API)」と「共通API(Common API)」の2つのモデルが導入されました。
アプリケーション固有 APIは、WordやExcelなどのアプリケーションごとのオブジェクトを操作するためのJavaScriptライブラリです。
前回の記事の通り、Word用のアプリケーション固有APIはWord JavaScript APIと呼ばれ、Word用のJavaScriptライブラリを意味します。
このAPIを用いてWordのオブジェクトを直接操作できるようになりました。
Word上でカーソルで選択した範囲のテキストへの処理だけではなく、文書全体で検索したテキストの操作も可能になりました。
その結果、Word VBAのような考え方で文書内の特定のキーワードを着色するような一括処理も可能になりました。
Office 2013でのオブジェクト操作のために使っていた「対象をバインドして操作する機能」はOffice 2016の共通APIに引き継がれました。
しかし、Office 2016では、アプリケーション固有 APIを用いてオブジェクトを操作できるため、わざわざ「バインドを伴う操作」をする必要はありません。
実際、アプリケーション固有 APIで想定されているオブジェクト操作ができない場合にのみバインドを利用することが推奨されています。
(参考:共通 JavaScript API オブジェクト モデル)
その後も続くAPIの進化
アプリケーション固有APIで利用できるオブジェクトはその後も増え続けています。
前述の通り、現在のWord JavaScript API のバージョンは1.3です。このバージョンでWord内の表を詳細に操作できるようになりました。
さらに、Word JavaScript API のプレビュー版と呼ばれるバージョンも用意されており、利用すれば今後の採用が検討されている機能が試せます。
現在プレビュー版には、ブックマークされた箇所を操作するメソッドが含まれています。
このような進化を伴うため、Officeのバージョンにより使用できるAPIが異なるのです。
Officeアドイン開発では、ユーザーのOfficeのバージョンを考慮して、適切なAPI を使用する必要があります。
なお、Officeのバージョンに合わせてAPIを適宜変更する開発方法も用意されていますが、ここでは説明を省略します。
以下のページに、Officeのバージョンごとに利用可能なAPIのバージョンが示されています。
(参考:Word JavaScript API の要件セット)
まとめ
やはりWord JavaScript APIとWord VBAの役割分担が重要ですね。
上述の通り、Word 2016以降はWord JavaScript APIを利用してWordのオブジェクトを操作できます。その際には、Word VBAと同じような考え方でオブジェクトを指定し操作します。
ただ、現時点ではWord JavaScript APIでできる操作にはまだ限界があり、Word VBAほど高度な操作はできません。
なので、Word JavaScript APIを使う場合には、その特長を活かしたプログラム開発に使うのがよいと思います。
Word JavaScript APIにはWord VBAの機能面とは異なる明確なメリットがあります。それは、Word JavaScript APIは、JavaScriptというブラウザ上で動作するプログラミング言語のライブラリということです。
アドインとしての配布方法もWord JavaScript APIとWord VBAとでは異なります。アップデートに関してはWord JavaScript APIのほうが簡単です。
今後の記事で、Word JavaScript APIとWord VBAとの違いをプログラミングの面から紹介したいと思います。
まだ私が十分に理解しているわけではないのですが、サンプルコードを紹介しつつ、少しずつ違いを整理していきたいと思います。
関連記事
【Officeアドイン】文書内の最初のキーワードにジャンプするWord JavaScript API
【Officeアドイン】カーソル位置の次のキーワードにジャンプするWord JavaScript API