Excel アドインの共同編集機能Coauthoring in Excel add-ins

共同編集機能により、複数のユーザーが連携して同じ Excel ブックを同時に編集できるようになります。With coauthoring, multiple people can work together and edit the same Excel workbook simultaneously. ブックのすべての共同編集者は、他の共同編集者がブックを保存するとすぐに、その共同編集者による変更の内容を確認できます。All coauthors of a workbook can see another coauthor's changes as soon as that coauthor saves the workbook. Excel ブックを共同編集するには、そのブックが OneDrive、OneDrive for Business、SharePoint Online のいずれかに保存されている必要があります。To coauthor an Excel workbook, the workbook must be stored in OneDrive, OneDrive for Business, or SharePoint Online.

重要

Office 365のExcel 2016で、左上の角にAutoSaveが表示されます。AutoSaveがオンになっているとき、 共著者がリアルタイムで変化に気づきます。 Excelアドインでのこの動きの影響を考慮してください。ユーザーはExcelウィンドウの左上にあるスイッチでAutoSaveをオフにできます。In Excel 2016 for Office 365, you will notice AutoSave in the upper-left corner. When AutoSave is turned on, coauthors see your changes in real time. Consider the impact of this behavior on the design of your Excel add-in. Users can turn off AutoSave via the switch in the upper left of the Excel window.

共同編集機能は、次のプラットフォームで使用できます。Coauthoring is available on the following platforms:

  • Excel OnlineExcel Online
  • Android用ExcelExcel for Android
  • iOS 用の ExcelExcel for iOS
  • Windows 10 用の Excel MobileExcel Mobile for Windows 10
  • Excel for Windows Desktop for Office 365 のユーザー (Windows デスクトップ ビルド 16.0.8326.2076 以降、2017 年 8 月から Current Channel のユーザーに公開)Excel for Windows Desktop for Office 365 customers (Windows desktop build 16.0.8326.2076 or later, which is available to current channel customers effective August 2017)

共同編集機能の概要Coauthoring overview

ワークブックの内容を変更するとき、Excelはすべての共著者を通してそれらの変更を自動的に同期します。共著者はワークブックの内容を変更できますが、Excelアドイン内で実行されているコードもそのようになります。例えば、以下のJavaScriptコードがOffice アドインで実行されているとき、範囲の値はContosoに設定されます:When you change a workbook's content, Excel automatically synchronizes those changes across all coauthors. Coauthors can change the content of a workbook, but so can code running within an Excel add-in. For example, when the following JavaScript code runs in an Office add-in, the value of a range is set to Contoso:

range.values = [['Contoso']];

すべての共同編集者間で 'Contoso' が同期されると、同じブックで作業するユーザーまたは実行中のアドインは、新しい範囲の値を認識するようになります。After 'Contoso' synchronizes across all coauthors, any user or add-in running in the same workbook will see the new value of the range.

共同編集機能では、共有ブック内の内容のみが同期されます。Coauthoring only synchronizes the content within the shared workbook. ブックから Excel アドイン内の JavaScript 変数にコピーした値は同期されません。Values copied from the workbook to JavaScript variables in an Excel add-in are not synchronized. たとえば、アドインが JavaScript 変数にセルの値 (たとえば 'Contoso') を保存しているときに、そのセルの値を共同編集者が 'Example' に変更すると、同期後に、そのセルの値はすべての共同編集者に対して 'Example' と表示されます。For example, if your add-in stores the value of a cell (such as 'Contoso') in a JavaScript variable, and then a coauthor changes the value of the cell to 'Example', after synchronization all coauthors see 'Example' in the cell. ただし、JavaScript 変数の値は 'Contoso' に設定されたままです。However, the value of the JavaScript variable is still set to 'Contoso'. さらに、複数の共同編集者が同じアドインを使用しているときに、それぞれの共同編集者が独自に変数をコピーしている場合、その変数のコピーは同期されません。Furthermore, when multiple coauthors use the same add-in, each coauthor has their own copy of the variable, which is not synchronized. ブックの内容を使用する変数を使用するときには、その変数を使用する前に、ブック内で更新された値について必ずチェックしてください。When you use variables that use workbook content, be sure you check for updated values in the workbook before you use the variable.

イベントを使用したアドインのメモリ内の状態の管理Use events to manage the in-memory state of your add-in

Excel アドインはブックの内容を読み込んで (非表示のワークシートおよび設定オブジェクトからの読み込み)、その内容を変数などのデータ構造に保存できます。Excel add-ins can read workbook content (from hidden worksheets and a setting object), and then store it in data structures such as variables. そのようなデータ構造に元の値がコピーされた後でも、共同編集者は元のブックの内容を更新できます。After the original values are copied into any of these data structures, coauthors can update the original workbook content. つまり、データ構造にコピーした値は、ブックの内容と同期されなくなっているということです。This means that the copied values in the data structures are now out of sync with the workbook content. 独自のアドインを構築するときには、ブックの内容とデータ構造に保存された値に関して、このような分離があることを必ず考慮に入れてください。When you build your add-ins, be sure to account for this separation of workbook content and values stored in data structures.

たとえば、カスタム視覚エフェクトを表示するコンテンツ アドインを作成するとします。For example, you might build a content add-in that displays custom visualizations. カスタム視覚エフェクトの状態は非表示のワークシートに保存することにします。The state of your custom visualizations might be saved in a hidden worksheet. 共同編集者が同じブックを使用するときに、次のシナリオが考えられます。When coauthors use the same workbook, the following scenario can occur:

  • ユーザー A がドキュメント開くと、カスタム視覚エフェクトがブックに表示されます。User A opens the document and the custom visualizations are shown in the workbook. カスタム視覚エフェクトは、非表示のワークシートからデータを読み込みます (たとえば、視覚エフェクトの色が青色に設定されているとします)。The custom visualizations read data from a hidden worksheet (for example, the color of the visualizations is set to blue).
  • ユーザー B が同じドキュメントを開いて、カスタム視覚エフェクトの変更を始めます。User B opens the same document, and starts modifying the custom visualizations. ユーザー B は、カスタム視覚エフェクトの色を橙色に設定します。User B sets the color of the custom visualizations to orange. 橙色の設定が非表示のワークシートに保存されます。Orange is saved to the hidden worksheet.
  • ユーザー A の非表示のワークシートが新しい値の橙色で更新されます。User A's hidden worksheet is updated with the new value of orange.
  • ユーザー A のカスタム視覚エフェクトは青色のままです。User A's custom visualizations are still blue.

ユーザー A のカスタム視覚エフェクトが、共同編集者によって非表示のワークシートに加えられた変更に呼応するようにするには、BindingDataChanged イベントを使用します。If you want User A's custom visualizations to respond to changes made by coauthors on the hidden worksheet, use the BindingDataChanged event. これにより、共同編集者がブックの内容に加えた変更が、アドインの状態に反映されるようになります。This ensures that changes to workbook content made by coauthors is reflected in the state of your add-in.

共同編集機能にイベントを使用する際の注意事項Caveats to using events with coauthoring

前述したように、シナリオによっては、すべての共同編集者に向けてイベントをトリガーすることで、ユーザー エクスペリエンスが向上します。As described earlier, in some scenarios, triggering events for all coauthors provides an improved user experience. ただし、この動作がユーザー エクスペリエンスの低下を招くシナリオも存在することに注意してください。However, be aware that in some scenarios this behavior can produce poor user experiences.

たとえば、データの入力規則のシナリオでは、一般に、イベントに呼応して UI を表示します。For example, in data validation scenarios, it is common to display UI in response to events. 前のセクションで説明した BindingDataChanged イベントは、ローカル ユーザーまたは共同編集者 (リモート) のどちらかがバインディングの範囲内でブックの内容を変更したときに実行されます。The BindingDataChanged event described in the previous section runs when either a local user or coauthor (remote) changes the workbook content within the binding. BindingDataChanged イベントのイベント ハンドラーが UI を表示すると、ユーザーに自分が行った変更とは無関係の UI が表示されるようになるため、ユーザー エクスペリエンスが低下します。If the event handler of the BindingDataChanged event displays UI, users will see UI that is unrelated to changes they were working on in the workbook, leading to a poor user experience. アドインでイベントを使用する場合は、UI の表示を避けるようにしてください。Avoid displaying UI when using events in your add-in.

関連項目See also