Как связать элементы управления содержимым с coreProperties в Word из надстройки Office.js - PullRequest
0 голосов
/ 17 октября 2019

Я создаю надстройку Office, которая должна вставлять элементы управления содержимым, указывающие на свойства документа, такие как заголовок, подзаголовок, автор и т. Д., На курсор. Но если я просто назову их «заголовок», содержимое элементов управления заголовком в заголовке не отражает эти изменения. Насколько я понимаю из документации, мне нужно привязать элементы управления к некоторому элементу customXml. Я полагаю, что вставка моего собственного XML будет работать, но я хочу связать их со свойствами основного документа, которые уже есть.

Когда я открываю вкладку разработчика, появляется панель сопоставления XML, которая показывает мне 3 пользовательских XML-документа со схемой, настроенной на некоторые XML-документы по умолчанию, где http://schemas.openxmlformats.org/package/2006/metadata/core-properties, кажется, содержит свойства, которые я хочуиспользовать. Этот xml находится в папке docProps в docx (zip) как core.xml .

Но как мне подключить этот XML к элементам управления содержимым, которые я вставляю? Существующие элементы управления содержимым были вставлены на вкладку «Вставка» в Word в разделе «Быстрые детали», «Свойства документа». Я в основном хочу повторить, что в надстройке, так что изменения, которые пользователь вносит в них, также изменит содержимое от существующих элементов управления в верхнем / нижнем колонтитуле.

[править]

Кажется, что основные свойства также доступны через customXmlParts. По крайней мере, когда я получаю Id основных свойств по:

Office.context.document.customXmlParts.getByNamespaceAsync("http://schemas.openxmlformats.org/package/2006/metadata/core-properties", result => {
  this.log(result);
}).catch(myError => { this.log("NS: " + myError); });

, он возвращает бит json с массивом значений, где Id является видимым. С этим идентификатором я могу получить строку XML, в которой отображаются обязательные свойства:

Office.context.document.customXmlParts.getByIdAsync("{6C3C8BC8-F283-45AE-878A-BAB7291924A1}", (result) => {
  const xml = result.value;
  xml.getXmlAsync({}, (result2) => {
    this.log(result2.value);
  });
});

Теперь мне просто нужно выяснить, как связать их с моими элементами управления контентом. В документах говорится, что основные свойства не могут быть сопоставлены с элементами управления расширенного текста. Вставка элемента управления с помощью

Word.run(async context => {
  const _sel = context.document.getSelection();
  _sel.load();
  await context.sync();
  const _cc = _sel.insertContentControl();
  _cc.title = 'Author';
  await context.sync();
});

, кажется, добавляет именно это: элемент управления расширенным текстовым содержимым. И даже в этом случае в документах неясно, как именно ссылаться на элемент управления содержимым в Office.context.document.bindings.addFromNamedItemAsync (). Любые указатели о том, как это сделать, будут с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...