Я работаю над надстройкой Word, используя Office JS API, пытаясь добавить элемент управления содержимым вокруг привязки таблицы в документе.
Проблема, с которой я столкнулся, заключается в том, что после выбора привязки вокруг таблицы с использованием goToByIdAsync()
элемент управления содержимым создается только вокруг последней строки таблицы, а не для выделения. Возвращая значение ctx.document.getSelection()
, я вижу, что выбранный диапазон - это только последняя строка в выбранной таблице. Мне нужно использовать объект Binding, чтобы узнать выбранные диапазоны ячеек таблицы. Что-то я делаю не так?
var bindingId = '123';
var doc = Office.context.document;
// Create table in document.
doc.setSelectedDataAsync(tableValue, { coercionType: Office.CoercionType.Table }, function (asyncResult) {
// Add Binding to table
doc.bindings.addFromSelectionAsync(Office.BindingType.Table, { id: bindingId }, function (asyncResult) {
// Select the table object
doc.goToByIdAsync(bindingId, Office.GoToType.Binding, { selectionMode: 'selected' }, function (asyncResult) {
// Create Content Control
createCC();
});
});
});
function createCC(){
Word.run(function (ctx) {
var range = ctx.document.getSelection();
var html = range.getHtml();
return ctx.sync().then(function () {
console.log('Selected Range', html.value); // Only displays last row in the table.
var myContentControl = range.insertContentControl();
myContentControl.tag = bindingId;
myContentControl.title = 'My Content Control';
return ctx.sync().then(function () {
//Content control for table created
});
}).catch(function (err) {
errorHandler(err);
});
});
}