現在、ドキュメント内の各センテンスを話すために、テキストからスピーチを使用するアドインを開発中です。私は追跡されたオブジェクトを使用して、文章を次々に話す必要があるときに追跡します。Word Onlineでの追跡オブジェクトのスローエラー
'font.color'プロパティを読み込んでアクセスすることで、文章のフォント色を変更しようとするときに問題が発生します(話している間はハイライト表示されます)。これは、デスクトップ上で動作しますが、次のエラーがスローされますオンライン:
デバッグ情報:{「コード」:「GeneralException」、「メッセージ」:「プロパティはnullの 『GO』を読み取ることができません」、「errorLocation」 :「Range._onAccess」}以下
は、問題を再現する最小限のコードです:
...
var sentences;
...
Word.run(function (context) {
var selectedSentence = context.document.getSelection().getTextRanges([".", "!", "?"]);
context.load(selectedSentence)
return context.sync().then(function() {
sentences = selectedSentence.items[0].getRange()
.expandTo(context.document.body.paragraphs.getLast().getRange("end"))
.getTextRanges([".", "!", "?"]);
context.load(sentences);
context.trackedObjects.add(sentences);
return context.sync(sentences);
})
}).then(function (sentences) {
sentences.context.load(sentences, 'font');
return sentences.context.sync().then(function() {
sentences.items[0].font.color = "#2E86C1";
})
.then(sentences.context.sync)
}).catch(errorHandler);
あなたは、単に直接アクセスしようとすると、エラーも生成されます。
sentences.items[0].font.color = "#2E86C1";
sentences.context.sync();
それは意図的なものだ(私はあなたがそれぞれの文を強調したいどのくらいの時間を調整するために使用することができ、タイマーを追加してい)使用例では、次のセンテンスが話される前に 'Word.Run'の実行が完了していることを期待しています(したがって、そのフォントプロパティにアクセスする)ので、なぜ追跡対象オブジェクトを使用するのですか。上記のコードは、使用されている1つのセンテンスのみを示していますが、実際には、各センテンスを繰り返し処理するためにspeech.onendコールバックを使用しています。 – Daniel
@Daniel Microsoftエンジニアのコードを使用して私のEDITを見てください。 –