JavaScriptでプログラミングできるOffice 2013向けのアプリの基本的な作り方や、実際のアプリ構築時の留意点を解説。
※2015/08/08 更新:「Office用アプリ」(App for Office)は「Officeアドイン」(Office Add-ins)に名称変更されました。これに合わせて、本文の記述を一部修正しました。
※2016/01/15 更新:Office 2016におけるOfficeアドインの機能強化に合わせて、本文の記述を一部修正しました。
前編「JavaScriptで誰でも簡単に作って稼げる「Officeアドイン」とは?」では、Officeアドインの使い方とプログラミングについての基礎を説明した。今回(後編)は、このOfficeアドインを使って、現実のアプリを構築するうえで押さえておくべき考え方や留意事項などを、いくつかのテーマにわけて見ていきたい。
前編で紹介したように、Officeアドイン(=Office Add-ins、OfficeのWebアドイン。以前は、Office用アプリ、または、Apps for Officeと呼ばれていた)を使うと、開いているExcelブックやWord文書で選択されているデータの読み込み/書き込みや、バインドによるデータ連携が可能だ(バインドの動作については、前編の「Bing Map」のコンテンツ・アドインを参照してほしい)。これらの処理は、下記のとおり、JavaScriptを使ってプログラミングできる(※下記のコードではjQueryも使っている)。
// 選択領域のデータの読み込み(テキスト・データ)
Office.context.document.getSelectedDataAsync(
Office.CoercionType.Text,
function (res) {
if (res.status === 'succeeded') {
$('#result').val(res.value);
}
});
// 選択領域のデータの書き込み(テキスト・データ)
Office.context.document.setSelectedDataAsync('Subaru Kokubun');
// 選択領域のデータの書き込み(Excel表)
Office.context.document.setSelectedDataAsync([
['Name', 'Subaru Kokubun'],
['Item', 'Pencil'],
['Count', 6]
], { coercionType: 'matrix' });
// 選択領域のデータの書き込み(htmlやooxmlなど)
Office.context.document.setSelectedDataAsync(
'<a href="http://netweblog.wordpress.com/">Blog</a>',
{ coercionType: 'html' });
// 特定領域のバインド(テキスト、または単一セル)
Office.context.document.bindings.addFromSelectionAsync(
'text',
{ id: 'myBinding' });
// 上記のバインド領域に、変更イベントの処理を設定
Office.select('bindings#myBinding').addHandlerAsync(
'bindingDataChanged',
function (args) {
args.binding.getDataAsync(
{ coerciontype: 'text' },
function (res) {
if (res.status == 'succeeded') {
$('#result').val(res.value);
};
});
});
VBA(Visual Basic for Applications)やOfficeアドインのプログラミング経験がある人なら、ほかにも、Excelなどのオブジェクト・モデルを使ったプログラミング、保存確認や保存(Save)コマンドの呼び出し、リボン(のメニュー、ボタンなど)のカスタマイズなど、データの入出力以外にもさまざまな操作を組み合わせたくなるだろう。
これらについては、リリース当初のOffice 2013ベースのOfficeアドインの機能では不可能であったが、Office 2016以降のOfficeアドイン(新しいJavaScript API for Office含む)で可能になった。
Office 2013では、Excelシート上の任意のセル(または範囲)のデータの入出力用のAPI(=関数)もなく、上記のバインドのプログラミングを使うしかないので、特定の入力フォームや財務諸表の計算シートなど、複雑に書式が設定されたドキュメントを扱いたい場合は、OfficeアドインのAPIから書式を設定するのではなく、あらかじめ、こうした書式の設定されたドキュメント(具体的にはExcelブックやWord文書)をテンプレートとして作成し、そこにOfficeアドインを添付しておき、Officeアドインではデータの入出力などの基本的な処理に専念するという形にした方がよいだろう。
こうしたテンプレートとOfficeアドインの融合については、この後で再考したい。
また、Office 2016の新しいAPIを使った高度なアドイン開発については、「Office 2016におけるOfficeアドイン進化のポイント 」で紹介しているので参照していただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.