2016-08-28 7 views
1

私は、作業ウィンドウのボタンを使用して電子メールの本文を変更できるOutlook2016用のOffice365アドインで作業しています。タスクパネルのOutlookアドイン - スクロールしたテキストを置き換えた後の空白のボディ

HTML:JavaScriptで

<p><button onclick="createLongBody()">Set Long Body</button></p> 
<p><button onclick="createShortBody()">Set Short Body</button></p> 
<div id="status"></div> 

function createLongBody() { 

    var longText = "<html><body>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/></body></html>"; 
    Office.context.mailbox.item.body.setAsync(longText, { coercionType: Office.CoercionType.Html }, function() { 
     $("#status").html("Long email complete!"); 
    }); 
}; 

function createShortBody() { 
    Office.context.mailbox.item.body.setAsync("<html><body><h1>Hello</h1></body></html>", { coercionType: Office.CoercionType.Html }, function() { 
     $("#status").html("Short email complete!"); 
    }); 

は複製するには:

  1. クリックして "ロングボディの作成" ボタン下、場所へ
  2. スクロール電子メールの末尾にカーソルを置く
  3. をクリックして「ショートボディを作成」ボタン

結果:「完全なショートメール」に

ステータステキストの変更が、新しいショートメールは表示されません - ボディは、単に空白になっています。

これはOfficeアドインAPIのバグですかどうか分かりませんが、コミュニティに提示して誰かがアイデアを持っているかどうかを確認したいのですか? 誰でも複製できますか?ありがとう!

答えて

1

あなたは身体のコンテキストを変更する最初の呼び出しのコールバックで後続の呼び出しを電話したを複製するHTML/JSで編集しますか?そうでない場合は、setAsyncが非同期関数であるため、期待通りに動作しない可能性があります。

この問題を再現しようとしていますが、失敗しました。以下のテスト機能は私にとってうまくいきます:

function setBody() { 
    var theHtml = "<html><body><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4></body></html>"; 
    Office.context.mailbox.item.body.setAsync(theHtml, { coercionType: Office.CoercionType.Html }, function (asyncResult) { 
     var newHtml= theHtml.replace(/Rose/g, "rose"); 
     Office.context.mailbox.item.body.setAsync(newHtml, { coercionType: Office.CoercionType.Html }); 
    }); 
} 

この問題を再現するのに役立つ完全なコードを共有してもよろしいですか?

+0

ありがとう@FeiXue!状況をよりよく反映するために、より多くのコードで質問を編集しました。私は2番目の編集をプログラムで実行していません。ユーザは、ボディを再び変更するために別のボタンをクリックしなければならない。 – TB2016

0

私はあなたのコードを試してみました。あなたの関数を貼り付けてコピーし、createLongBody()を実行してからcreateShortBody()を実行すると、電子メールの本文が置き換えられました。

どのバージョンのOutlookを使用していますか?

enter image description here

+0

Outlook 2016。短い電子メールボタンをクリックしたときに、長い電子メールの一番下にカーソルがありましたか?下にスクロールしてクリックすると、カーソルが長いメールの最後に表示されます。 (ステップ#2参照)。複製しようとしてくれてありがとう! – TB2016

+0

ええ、挿入ポインタが(createLongBody())関数を実行した後の最後のHelloの最後にあるようにクリックしました。 Outlook * 2016の*固有のバージョン番号がありますか?ファイル→オフィスアカウント→Outlookについて –

+0

バージョン16.0.4266.1003(32ビット) – TB2016

関連する問題