插入文本时使用 MS Word 加载项 API 创建内容控件

Create content controls using MS Word Add-In API while inserting text

我正在使用加载项将纯文本段落插入到我的 Word 文档中,但我想在插入此段落时在该段落的某些词上放置内容控件。有什么方法可以做到这一点,或者内容控件是否仅在插入文本后才起作用?

是的,如以下代码片段所示,可以通过修改该工具提供的示例在 Script Lab 中编写。

诀窍是使用(至少)两个范围,一个用于文本,另一个用于内容控件,如下面的代码片段和最后的屏幕截图所示.

说明

起点是目标区域对应的range(示例假设为整个文档)。然后 "copied" 到一个新的 range 对象,用于插入文本(该示例假设它应该出现在现有内容的末尾)。

新的文本内容,直到需要内容控件的地方,被插入到一个新的段落("on a new line") - 字符串开头的\n

然后在内容控件的文本范围末尾实例化一个新的 range。这是插入、格式化和分配给它的文本。

然后将文本目标 range 设置为 在内容控制范围 之后,附加文本 "appended".

代码

await Word.run(async (context) => {
    let rngDoc = context.document.body.getRange("Content");
    let rngTarget = rngDoc.getRange("End");
    rngDoc.load("text"); 

    await context.sync();

    console.log(rngDoc.text);

    rngTarget.insertText("\nStart: ", "Start");
    let rngCC = rngTarget.getRange("End");
    let cc = rngCC.insertContentControl();
    cc.appearance = Word.ContentControlAppearance.boundingBox;
    cc.insertText("In content control", "Replace");

    rngTarget = rngCC.getRange("After");
    rngTarget.insertText(" End.", "After");

    await context.sync();

    console.log("Content controls inserted: " );

  });

结果