2017-11-02 18 views
1

共有JS APIを使用してWord 2013で選択したテキストの直後にハイパーリンクを追加しようとしています。Office JSの選択後にテキストを挿入する

OOXMLを使用してハイパーリンクを挿入すると、現在のカーソルを選択なしで挿入すると問題なく動作します。私の問題は、OOXMLを追加するために選択されたテキストの終わりを「見つける」ことです。

そのままsetSelectedDataAsyncを使用すると、既存のテキストが上書きされます。選択したテキストをOOXMLとして読み込み、ハイパーリンクXMLを連結してみましたが、成功しませんでした。

私は現在の選択肢を読み込み、そのOOXMLを修正しようとしませんでしたが、回避することをお勧めします。

Word JS APIでは、前と後が選択肢に表示されるため、簡単に実行できます。共有APIでこれを行うことは可能ですか?ありがとう。

+0

HTMLとして 'getSelectedDataAsync'を使用してリンクを追加してから、文字列を戻すHTMLとして' setSelectedDataAsync 'を使用しましたか?これはOOXMLよりはるかに単純です。 –

+0

ありがとうございました!これは、私がいくつかのシンプルな書式で追加することができる金の答えを使用して行く方法でした。 – PBDoc

答えて

1

以下のサンプルコードは、(一つの例外を除いて:それはテキストとしてではなく、HTMLとして選択されたデータを取得する)マルクは、上記彼のコメントに記載されたアプローチを示します。

このコードは(テキストとして)選択したデータを取得するためにgetSelectedDataAsyncを使用し、そのデータへのハイパーリンクを追加し、バック(HTMLなど)ドキュメントにその文字列をプッシュするsetSelectedDataAsyncを使用しています。

Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, 
{ valueFormat: "unformatted" }, 
function (asyncResult) { 
    var error = asyncResult.error; 
    if (asyncResult.status === Office.AsyncResultStatus.Failed) { 
     console.log(error.name + ": " + error.message); 
    } 
    else { 
     // Get selected data. 
     var dataValue = asyncResult.value; 
     console.log("Selected data is: " + dataValue); 

     // Create newText by appending hyperlink to dataValue. 
     var myHyperlink = "<a href='https://www.bing.com'>https://www.bing.com</a>"; 
     var newText = dataValue + " " + myHyperlink; 
     console.log("New text is: " + newText); 

     // Replace selected text with newText value. 
     Office.context.document.setSelectedDataAsync(newText, { coercionType: "html" }, 
      function (asyncResult) { 
       var error = asyncResult.error; 
       if (asyncResult.status === Office.AsyncResultStatus.Failed) { 
        console.log(error.name + ": " + error.message); 
       } 
      }); 
    } 
}); 

注:このスニペットがするように、テキストとして選択したデータを取得する一つの副作用は、であるドキュメントに(追加のハイパーリンクで)戻って、その文字列を書くとき、選択したテキストに以前に存在していた書式(たとえば、フォントの色、スタイルなど)が失われます。最初に選択したテキストの書式を保持することが重要な場合は、選択したデータをHTMLにしてから、最初に選択したテキストを含むHTMLの部分にハイパーリンクを追加してから、そのHTMLを書き戻す必要がありますドキュメント。

Script Lab(https://aka.ms/getscriptlab)を使用すると、Wordでこのコードスニペットをすばやく簡単に試すことができます。 Script Labアドイン(無料)をインストールし、ナビゲーションメニューで「インポート」を選択し、次のGIST URL(https://gist.github.com/kbrandl/8e235fb0ccc190bf42ed9ce1874f5559)を使用するだけです。

+0

ありがとうございました!これははるかに簡単で、上付き文字のような簡単な書式を適用することができます。 – PBDoc

関連する問題