Office.js 如何插入 2 个内容控件,一个在选择开始处,一个在选择结束处

Office.js How to insert 2 content controls, one at start of selection and one at end of selection

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

但我一直收到 'Invalid Argument' 错误。

以下 Script Lab 代码片段适合我。它使用 three Ranges,尽管理论上两个就足够了。不管怎样,需要保留原来的Range(selection),这样就可以先得到selection之前的位置,然后再得到select之后的位置=]ion.

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

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