実際の問題:
Windows から最新の更新プログラムを取得した後、Office.js (api メソッド: Office.context.document.bindings.addFromNamedItemAsync) の「前の呼び出しが完了するまで待機します」というエラーが表示されます。
この最新のアップデートを使用しているユーザーのほとんどは、この問題に直面しています.(他のバージョンでは完全に機能しています)
当面の間、ユーザー マシンから Windows Update を削除し、MS オフィスをアンインストールして再インストールします。
参考までに、以下に私たちの観察を示します 。これは、書き込む名前の範囲が非常に大きい場合に見られます。これは、最新の更新後にのみ発生します。以前は、同じ名前の範囲番号を持つ同じコードが正常に機能していました。
以下の手順を実行した後でも、変更されたファイルが JS ファイルのタスク ペイン アプリに反映されません (ただし、html の変更を確認できますが、これが新しい更新の問題であるかどうかはわかりません) - プロジェクトをビルドして JS ファイルを生成します (タイプ スクリプトから)。- 直接変更された JS ファイル。- IE ブラウザのキャッシュを削除しました。- ソリューションをクリーンアップして再構築 - 一時ファイルを削除 - システムを再起動。
Visual Studio にデバッガー スクリプト プロセスをアタッチできません (他のシステムでは問題なく動作しています)。
この問題に直面しているバージョン情報は次のとおりです。
さらに情報が必要な場合はお知らせください。
1 件の説明を更新 `
Office.select('bindings#' + namedRange, function (callback: any) {
if (callback.status === Office.AsyncResultStatus.Failed) {
Office.context.document.bindings.addFromNamedItemAsync(
namedRange, //The name of the named item. Required.
bindingType, // Specifies the type of the binding object to create. Required.
{
id: namedRange, // Specifies the unique name to be used to identify the binding object. Optional. If no id argument is passed, an id will be autogenerated.
//asyncContext: data, // A user-defined item of any type that is returned in the AsyncResult object without being altered. Optional.
coercionType: bindingType
},
// A function that is invoked when the callback returns, whose only parameter is of type AsyncResult.
(result: any) => {
if (result.status == Office.AsyncResultStatus.Succeeded) {
var id = result.value.id;
Office.select(
"bindings#" + id,
function onError() {
defQ.reject(' Error: Binding not found');
}
).getDataAsync(
{
},
(asyncResult: any) => {
if (asyncResult.status == Office.AsyncResultStatus.Succeeded) {
tracer.Trace("Completed read operation In ReadExcelQPromise method " + namedRange + " time elapsed -" + (Date.now() - startTime));
defQ.resolve(asyncResult.value);
}
else {
tracer.Trace("In ReadExcelQPromiseFail1 method " + namedRange + Date() + " ", asyncResult);
defQ.reject(' Error: ' + asyncResult.error.message);
}
}
);
}
else {
tracer.Trace("In ReadExcelQPromiseFail2 method " + namedRange + " " + Date(), result);
defQ.reject(' Error: ' + result.error.message);
}
});
}
}).getDataAsync(
{
},
(asyncResult: any) => {
if (asyncResult.status == Office.AsyncResultStatus.Succeeded) {
tracer.Trace("Completed read operation In ReadExcelQPromise method " + namedRange + " time elapsed -" + (Date.now() - startTime));
defQ.resolve(asyncResult.value);
}
else {
tracer.Trace("In ReadExcelQPromiseFail3 method " + namedRange + " " + Date(), asyncResult);
defQ.reject('Error: ' + asyncResult.error.message);
}
}
);
正確なメッセージは次のとおりです。
エラー :前の呼び出しが完了するまで待ちます