2

office.jsライブラリを使用して、Office アドイン (以前の Office 用アプリ) に取り組んでいます。

私のアプリは、Excel シートのデータ変更について通知を受けるためのハンドラーを追加します。

Microsoft.Office.WebExtension.select("bindings#orderBinding", onBindingNotFound)        
.addHandlerAsync(
    Microsoft.Office.WebExtension.EventType.BindingDataChanged,
    (eventArgs) => {
        console.dir('Data changed in excel');
    }
);

このアプリを Excel で使用している場合、問題なく動作しています。しかし、Web (Excel Online) で実行しているときは機能しません。

Web では、ハンドラーが正常に追加されます。ただし、Excel でデータが変更された場合、ハンドラーは呼び出されません。

4

1 に答える 1

0

コードを Excel Online でテストします。あなたが報告している問題は再現しません。

「API Tutorial for Office」アプリでコードを確認できます。Onedrive で新しい Excel ドキュメントを作成し、[挿入] タブの [Office 用アプリ] にこのアプリを挿入するだけです。

任意の JavaScript ソース コードを貼り付けて実行できます。

これが私の再現ステップです:

まず、バインディングを作成します。

Office.context.document.bindings.addFromSelectionAsync("table",  { id: "orderBinding" }, function (asyncResult) {
    if (asyncResult.status == "failed") {
        showMessage("Action failed with error: " + asyncResult.error.message);
    } 
    else {
        showMessage("Added new binding with type: " + asyncResult.value.type + " and id: " + asyncResult.value.id);
    }
});

次に、イベント ハンドラーをバインディングに割り当てます。

Microsoft.Office.WebExtension.select("bindings#orderBinding", onBindingNotFound)        
.addHandlerAsync(
    Microsoft.Office.WebExtension.EventType.BindingDataChanged,
    function (eventArgs){
        showMessage('Data changed in excel');
    }
);

function onBindingNotFound(){
    showMessage("The binding object was not found. "+
  "Please return to previous step to create the binding");
}

セルを変更すると、イベント ハンドラーが正しく機能することを確認します。

Excel Online でハンドラーを確認する

于 2015-06-17T08:21:21.987 に答える