絶対!あなたが説明するシナリオは、実際には、プラットフォームが最初に設計された主要な種類のアドインの 1 つです。重要な要素は、ドキュメント内のコンテンツ コントロールを追跡する「バインディング」と呼ばれる JavaScript オブジェクトであり、OXML やカスタム XML は必要ありません。
API は、コンテンツ コントロール (テキスト ボックスと同様) を直接追加できます。Bindings.addFromSelectionAsyncメソッドを呼び出します。
function addNewField(fieldName){
Office.context.document.bindings.addFromSelectionAsync("text",
{ id: fieldName },
function (asyncResult){
displayNumberFromDatabase(asyncResult.value);
}
}
また、2 つのイベント ハンドラーを登録して、ユーザーがこれらのコンテンツ コントロール内のテキストを選択または変更したときに通知を受け取るようにします。この場合の関連イベントは、それぞれBindingSelectionChangedとBindingDataChangedです。
Office.context.document.addHandlerAsync("bindingDataChanged", whenBindingDataChanged);
Office.context.document.addHandlerAsync("bindingSelectionChanged", whenBindingSelected);
これらのイベントがトリガーされると、コンテンツを読みたくなるでしょう。これはBinding.getDataAsyncメソッドで行うことができます。
function whenBindingDataChanged(eventArgs){
eventArgs.binding.getDataAsync(function(asyncResult){
setValueToDatabaseAsync(eventArgs.binding.id,asyncResult.value);
// you need to implement setValueToDatabaseAsync
});
}
最後に、Binding の内容を自分で変更して初期値を書き込むには、Binding.setDataAsyncメソッドを使用します。
function displayNumberFromDatabase(myBinding){
getValueFromDatabaseAsync(myBinding.id, function(value){
myBinding.setDataAsync(value);
});
// you need to implement getValueFromDatabaseAsync
}
-Michael Saunders 氏、Office アドイン担当 PM