Заменить текст текущего абзаца в MS word Office. js надстройка - PullRequest
1 голос
/ 02 апреля 2020

В надстройке Word я пытаюсь:

  1. получить documentSelectionChanged события,
  2. получить текст текущего абзаца и
  3. заменить строку foo на строку bar в текущем абзаце.

Все работает, кроме последней части. Текст документа Word не меняется.

Это мой код:

function updateText() {
  var range, foo_range, par;
  Word.run(function (context) {
    range = context.document.getSelection();
    range.paragraphs.load('items');
    return context.sync()
    .then(function() {
      par = range.paragraphs.items[0];
      console.log(par.text); // THIS WORKS!
      foo_range = par.search('foo');
      foo_range.load('items');
    })
    .then(context.sync)
    .then(function() {
      console.log(foo_range.items[0].text); // THIS WORKS!
      foo_range.items[0].insertText('bar', 'Replace');
      // Here, I am trying all the load options I can think of 
      foo_range.load('items');
      foo_range.items[0].load('text');
      foo_range.load('text');
      range.paragraphs.load('items');
      range.paragraphs.load('text');
      return context.sync();
    });
  });
}

Любая идея, почему foo не заменяется на bar в документе Word

1 Ответ

1 голос
/ 02 апреля 2020

Я не могу воспроизвести. Ваш код работает для меня на рабочем столе Office 365.

Кстати, ни один из этих load вызовов до последнего context.sync ничего не делает, и вы должны удалить их. Вам нужно загружать свойство (и затем syn c), когда вы собираетесь прочитать свойство после syn c. Поскольку вы пишете только в документ, вам не нужно ничего загружать.

...