【问题标题】:Replace text of current paragraph in MS word Office.js add-in替换 MS Word Office.js 加载项中当前段落的文本
【发布时间】:2020-04-03 00:51:17
【问题描述】:

在 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();
    });
  });
}

知道为什么在 Word 文档中foo 不会被bar 替换吗?

【问题讨论】:

    标签: ms-word office-js


    【解决方案1】:

    我无法复制。您的代码适用于桌面版 Office 365。

    顺便说一句,在最后一个 context.sync 之前的那些 load 调用都没有做任何事情,你应该删除它们。您只需在同步后读取属性时加载属性(然后同步)。由于您只是在写入文档,因此您不需要加载任何内容。

    【讨论】:

    • 奇怪,这是我的代码第二次为你工作,但不适合我。知道问题可能出在哪里吗?例如,特定于 Mac 的错误、清单中的配置或其他?
    • 首先,看看你的代码是否在the Script Lab tool中工作。如果不是,我会怀疑是 Mac 特有的错误,在这种情况下,您应该在 office-js repo 上提出问题。
    • Rick,所以问题出在我的清单中的权限。我有ReadAllDocument,但我需要ReadWriteDocument 。我忘记了清单有这样的权限。
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多