1

Office用のJavaScript API、MS Word 2016、Visual Studio 2015を使用して開発しています。文書内に同じタイトルのRich Text ContentContolが複数あります。これらのContentControlをハンドラにバインドして、onBindingDataChanged通知を取得できるようにしようとしています。Wordの複数のContentControls(同じタイトルを持つ)にハンドラをバインドする方法はありますかOffice用Javascript APIの使用

独自のIDを持つ1つのハンドラにContentControlsをバインドする方法はありますか?またはContentControlsのIDを1つのパラメータとして渡しますか?

私の現在のコードは次のようである:

function bindNamedItem() { 

    Office.context.document.bindings.addFromNamedItemAsync("CCTitle", Office.BindingType.Text, { id: 'ccbind' }, function (result) { 
     if (result.status == 'succeeded') { 
      console.log('Added new binding with type: ' + result.value.type + ' and id: ' + result.value.id); 
     } 
     else 
      console.log('Error: ' + result.error.message); 
    }); 

} 
function addEventHandlerToBinding() { 
    Office.select("bindings#ccbind").addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged); 
} 

var onBindingDataChanged = function (result) { 
     console.log(result);  
    } 

複数contentcontrolsは、タイトル「CCTitle」と文書であるので、機能bindNamedItemaddFromNamedItemAsyncがエラーを与える:Multiple objects with the same name were found.

私がしようとしている何達成するためには、ContentControlsのIDとコンテンツのいずれかをユーザーが変更したときに取得する必要があります。何か助けてもらえますか?前もって感謝します。

答えて

0

コンテンツコントロールの名前を付けると、名前に基づいてバインドできなくなります。しかし、はあなたがすべてのコンテンツコントロールにバインドするために使用することができます回避策があります:

  1. まずContentControlCollectionと呼ばれるドキュメント内のすべてのコンテンツコントロールの配列を返す、Document .contentControlsを取得します。
  2. アレイ内の各要素はContentControl objectです。各ContentControlに対して手順3〜6を順番に実行します。
  3. contentControl.titleを使用してContentControlの名前を確認します。探している名前(CCTitle)と一致する場合は、次の手順に進みます。それ以外の場合は、次のContentControlの手順3から戻ってください。
  4. デフォルトのパラメータでContentControlのselect() methodを呼び出して、単語を選択させます。
  5. ContentControlが選択されたという確認をコールバックで受け取ったら、Bindings.addFromSelectionAsync()にTextのバインディングタイプを呼び出します。
  6. Bindingが正常に作成されたという確認をコールバックで受け取ったら、Binding.addHandlerAsyncにBindingDataChanged EventTypeを呼び出します。必要に応じて、これらのバインディングすべてに対して同じハンドラ関数を使用できます。

この回避策の欠点の1つは、連鎖非同期呼び出しが多数あるため、パフォーマンスが望みどおりに速くない可能性があることです。結果として、この操作をユーザーの操作に関連付けること、および/またはユーザーを混乱させないように作業ウィンドウでUIを読み込むことを追加することをお勧めします。

-Michael(OfficeアドインのPM)

関連する問題