插入带有曲目更改的OOXML评论

时间:2016-10-26 11:36:46

标签: ms-word office-js

在我的Word加载项中,我通过用包含注释的OOXML替换所选文本来插入注释。

启用“跟踪更改”后,Word会将此注册为3个操作:删除+插入+注释。它甚至会插入段落,但我不确定它是否相关。

有没有办法只将它注册为注释操作,就像使用Word功能插入注释一样?

使用rangeObject.insertOoxml我试图在字符串的开头和结尾处插入而没有任何运气,因为两个OOXML插入似乎没有关系(这是有意义的):

Word.run(function (context) {
    var range = context.document.getSelection();

    var preBody = '<?xml version="1.0" encoding="UTF-8"?><pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"><pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml" /></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="comments.xml" /></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"><pkg:xmlData><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body><w:p>';
    var postBody = '</w:p></w:body></w:document></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/comments.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml"><pkg:xmlData><w:comments xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:comment w:id="0" w:author="Some User" w:date="2016-10-26T10:11:05" w:initials="SU"><w:p><w:r><w:t>My comment</w:t></w:r></w:p></w:comment></w:comments></pkg:xmlData></pkg:part></pkg:package>';

    var before = preBody + '<w:commentRangeStart w:id="0" />' + postBody;

    var afterBody = '<w:commentRangeEnd w:id="0" /><w:r><w:commentReference w:id="0" /></w:r>';
    var after = preBody + afterBody + postBody;

    range.insertOoxml(before, Word.InsertLocation.start);
    range.insertOoxml(after, Word.InsertLocation.end);
    return context.sync().then(function () {
        console.log('OOXML added to the beginning and the end of the range.');
    });
})
.catch(function (error) {
    console.log('Error: ' + JSON.stringify(error));
    if (error instanceof OfficeExtension.Error) {
        console.log('Debug info: ' + JSON.stringify(error.debugInfo));
    }
});

1 个答案:

答案 0 :(得分:2)

这是一个很好的问题,谢谢你的提问。当您使用insertOoxml方法时,您实际上在文档的正文中书写,因此您在跟踪更改时观察到的行为是活动的,这是设计的。到目前为止,没有解决方法。当我们支持将注释作为API的主要功能(而不是插入ooxml作为变通方法)时,将解决此问题。请务必在我们的uservoice中添加您的请求或投票给现有的! https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/category/163566-add-in-word

顺便说一下,几个月前我们修复了一个错误,就是insertOoxml方法插入了一个额外的段落,请确保更新你的Word以获得最新的错误修复。如果仍然发生这种情况,请分享您的Office版本号。