Office365 使用office.js进行office加载项开发时,无法在word文档的书签中插入文本

Office365 使用office.js进行office加载项开发时,无法在word文档的书签中插入文本,office365,office-js,Office365,Office Js,我正在为word开发一个外接程序。主要任务是使用数据库中的数据填充文档中的书签。在office.js中,我发现书签可以作为范围对象访问,我使用的是“rangeObject.insertText(text,insertLocation)”将数据插入书签的方法。但问题是第二个参数insertLocation值可以是“替换”、“开始”、“结束”、“之前”或“之后”。这基本上是在书签之前或之后追加数据。如下所示- 使用insertLocation值“Replace”,它将替换整个书签,并实际从文档中删

我正在为word开发一个外接程序。主要任务是使用数据库中的数据填充文档中的书签。在office.js中,我发现书签可以作为范围对象访问,我使用的是“rangeObject.insertText(text,insertLocation)”将数据插入书签的方法。但问题是第二个参数insertLocation值可以是“替换”、“开始”、“结束”、“之前”或“之后”。这基本上是在书签之前或之后追加数据。如下所示-

使用insertLocation值“Replace”,它将替换整个书签,并实际从文档中删除书签!。所以我只想在书签中插入这样的文本-

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

这是我的密码-

        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);

在回顾这个问题之后,我们发现“替换”行为是经过设计的

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

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

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

最后,书签API仍在预览中,发布日期未知

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

非常感谢您使用我们的预览API。我只是重新设计了这种行为,这是故意的。是的,before、start、end和after的语义在API中非常清楚

  • “开始”和“结束”插入位置意味着插入将在调用范围的边界内,在这种情况下,意味着如果您使用其中任何一个位置,则书签需要扩展到插入的位置
  • 另一方面,“Before”/“After”表示插入范围边界之外
  • 最后,replace应使用作为参数提供的任何文本替换书签,书签将被删除(与直接在UI中使用VBA编程一致)

  • 谢谢

    请尽快修复此错误。因为我们的外接程序中有一个主要功能依赖于此。我们还有一个最后期限要满足。谢谢。为了正确设置期望值,这是一个预览API,在我们将其移至生产之前,您不应依赖此API进行生产。这个日期现在还不知道。@JuanBalmori这个日期是固定的吗?office js的计划生产日期是什么