Ms word 替换MS word Office.js加载项中当前段落的文本

Ms word 替换MS word Office.js加载项中当前段落的文本,ms-word,office-js,Ms Word,Office Js,在Word插件中,我正在尝试: 接收documentSelectionChanged事件 获取当前段落的文本,然后 将当前段落中的字符串foo替换为字符串bar 除了最后一部分,一切都正常。Word文档的文本没有更改 这是我的代码: function updateText() { var range, foo_range, par; Word.run(function (context) { range = context.document.getSelection();

在Word插件中,我正在尝试:

  • 接收
    documentSelectionChanged
    事件
  • 获取当前段落的文本,然后
  • 将当前段落中的字符串
    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();
        });
      });
    }
    

    知道为什么Word文档中的
    foo
    没有被
    bar
    取代吗?

    我无法复制。您的代码在桌面Office 365上对我有效


    顺便说一句,在最后一个
    context.sync
    调用之前,这些
    加载
    调用都不会执行任何操作,您应该删除它们。在同步后要读取属性时,只需加载属性(然后进行同步)。因为您只是在向文档写入,所以不需要加载任何内容

    奇怪的是,这是我的代码第二次为你而不是我工作。你知道问题出在哪里吗?例如,特定于Mac的错误、清单中的配置或其他东西?首先,查看您的代码是否在中工作。如果不是,我会怀疑是Mac特定的bug,在这种情况下,您应该在.Rick上提出一个问题,因此问题是我清单中的权限。我有
    ReadAllDocument
    ,但我需要
    ReadWriteDocument
    。我忘了舱单上有这样的权限。