Office JavaScript API:绑定选择的子字符串

时间:2017-08-08 06:37:17

标签: office-js

问题

在MS Word中使用Office JavaScript API,我知道如何使用document.bindings.addFromSelectionAsync绑定当前选择,但是,我还没有找到绑定当前选择的子字符串的方法。

例如,如果用户选择了整个段落并且我想仅绑定第一个单词,我将如何才能执行此操作?

方法失败

  1. 首先绑定选择,然后绑定子字符串,然后删除第一个绑定:我还没有找到绑定子字符串的方法。
  2. 首先更改选择,然后使用addFromSelectionAsync:我还没有找到更改选择的方法。

2 个答案:

答案 0 :(得分:3)

在Word中, Binding 在物理上由文档中的内容控件表示,因此通常的方法是在您需要的地方创建内容控件(在这种情况下,选择中的第一个单词) )并为其分配标题,以便最终可以使用bindings.addFromNamedItem方法创建绑定。

总结:

  1. 获取要创建绑定的范围。在这种情况下,您需要选择中的第一个单词。
  2. 获得范围后,请使用内容控件对其进行包装并指定标题。
  3. 最后,使用该标题的addFromNamedItem。
  4. 以下是一个示例:

     Word.run(function (context) {
            //first we get the first word in the selection by using the split method, and using space as delimiter and then we add a content control
            var firstWordContentControl = context.document.getSelection().split([" "], true, false, true).getFirst().insertContentControl();
    //let's add a title.
            firstWordContentControl.title = "BindingID";
            return context.sync()
                .then(function () { 
    //we reuse the title to create the binding.
                    Office.context.document.bindings.addFromNamedItemAsync("BindingID", "text", {}, function (result) {
                        console.log(result.status);
                        if (result.status == "succeeded") { 
                            // lets create an event!
                            result.value.addHandlerAsync(Office.EventType.BindingSelectionChanged, function () { 
                                console.log("event happened");
                            })
                        }
                     });
                })
        })
            .catch(function(exception) {
            OfficeHelpers.Utilities.log(exception);
        })

    希望这会有所帮助。 -Juan

答案 1 :(得分:2)

虽然不完全是您正在寻找的内容,但Word API为您提供了完成此操作所需的大部分内容。

可以使用document.getSelection()获取用户的当前选择。这将返回Range object。在这里,您可以深入了解Paragraphschild ranges(基于分词规则)等等。

一旦你有一个Range对象反映了你正在寻找的文本,range.Select()将导致在UI中选择该范围。从这里,您可以使用addFromSelectionAsync来建立绑定。