【问题标题】:Can not insert text in bookmark in word document using office.js for office add-in development无法使用office.js在word文档的书签中插入文本进行office插件开发
【发布时间】:2020-02-12 06:28:02
【问题描述】:

我正在为 word 开发一个插件。主要任务是用数据库中的数据填充文档中的书签。在 office.js 中,我发现书签可以作为范围对象访问,我我正在使用“rangeObject.insertText(text, insertLocation)”方法将数据插入书签。但问题是第二个参数 insertLocation 值可以是“替换”、“开始”、“结束”、“之前”或“之后”。它基本上在书签之前或之后附加数据。像这样 - image 1 (current result using insertLocation value 'End')

使用 insertLocation 值“替换”它会替换整个书签并实际上从文档中删除书签!所以我想要的只是在书签中插入一个文本,如下所示 - image 2 (desired result)

注意:我必须稍后阅读这些书签值。所以不能删除任何书签。我正在使用 office.js api 的 1.4 beta 版本。

这是我的代码-

        Word.run(function (context) {

            var doc = context.document;

            //get the bookmark range by its name
            var bookmarkRange = doc.getBookmarkRangeOrNullObject("cscasenumber01");

            //insert a data
            bookmarkRange.insertText("test data",'end');


            // Synchronize the document state by executing the queued commands, 
            return context.sync();

        }).catch(errorHandler);

【问题讨论】:

    标签: office365 office-js


    【解决方案1】:

    查看此问题后,我们发现“替换”行为是设计使然。

    实际上,如果您直接使用 UI 替换包含书签的范围的文本,则该书签将被删除。如果您使用宏/VBA 以编程方式执行此操作,情况也是如此。

    好消息是,替换文本后,选择将是被替换的文本范围,因此如果需要,您可以在替换操作后重新创建书签。

    请注意,这只发生在替换时。在开始或结束时插入将保留书签。

    最后,Bookmark API 仍处于预览阶段,发布日期未知。

    --------- 保留预览答案的一些上下文 ---------

    非常感谢您使用我们的预览版 API。我只是重现这种行为,它是设计使然。是的,API 上的 before、start、end、after 的语义非常清晰。

    1. “开始”和“结束”插入位置意味着插入将在调用 Range 的边界内,在这种情况下意味着如果您使用其中任何一个,则需要将书签扩展为插入的任何内容。李>
    2. 另一方面,“之前”/“之后”意味着插入范围边界之外。
    3. 最后,replace 应该用作为参数提供的任何文本替换书签,书签将被删除(与直接在 UI 中执行此操作和使用 VBA 以编程方式执行此操作一致)。

    谢谢

    【讨论】:

    • 请尽快修复该错误。因为我们的插件中有一个主要功能依赖于它。我们还有截止日期。谢谢。
    • 只是为了正确设置期望值,这是一个预览 API,在我们将其转移到生产环境之前,您不应将其用于生产目的。该日期目前未知。
    • @JuanBalmori 这个是固定的,office js 的生产计划日期是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2019-05-14
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多