0

在 word 2016 中,当用户选择一些文本时,他们可以选择在选择的开始和结束处放置开始和结束内容控件。有什么好的方法可以做到这一点吗?每当我尝试插入内容控件时,它都会替换选定的文本。

这就是我所拥有的:

const ContentControlRange = context.document.getSelection();
const myContentControl = ContentControlRange.insertContentControl();

//set content control properties here

return context.sync().then(function () {
    console.log("creating cc context.sync()");

    //do other stuff
});

如果我两次调用此函数,最后一个内容控件将替换第一个内容控件。任何帮助表示感谢。

我试过了:

const ContentControlRange = context.document.getSelection().getRange('After');

但我不断收到“无效参数”错误。

4

1 回答 1

2

以下 Script Lab 代码片段适用于我。它使用三个 Ranges,尽管理论上两个就足够了。在任何情况下,都需要保留原始Range(选择),以便可以首先获得选择之前的位置,然后是选择之后的位置。

此代码使用"Start"and"End"作为位置参数。如果不使用这些,内容控件将替换选择,就像您选择文本然后键入一样。

async function
    insertTwoCC() {
    await Word.run(async(context) => {

        let currSel = context.document.getSelection();
        let rngBefore = currSel.getRange("Start");
        let rngAfter = currSel.getRange("End");
        let ccBefore = rngBefore.insertContentControl();
        let ccAfter = rngAfter.insertContentControl();
        await context.sync();
        })
    }
于 2018-08-27T13:35:59.713 回答