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

问题描述 投票:-1回答:1

我正在使用外接程序将纯文本段落插入到我的Word文档中,但是我想在此段落的某些单词上放置内容控件while插入此段落。有什么办法可以做到这一点,还是只有在插入文本之后内容控件才能起作用?

javascript ms-word office-js add-in office-addins
1个回答
0
投票

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

诀窍是使用(至少)两个范围,一个用于文本,另一个用于内容控件,如下面的代码片段所示,并在最后的屏幕快照中进行了说明。

说明

起始点是对应于目标区域的range(本示例假设整个文档)。然后将其“复制”到新的range对象,以插入要插入的文本(本示例假定该文本应位于现有内容的末尾)。

将新文本内容(直到需要内容控件的位置插入到新的段落中(“在新行中”)-字符串开头的\n

然后在内容控件的文本范围的末尾实例化一个新的range。它已插入,格式化并为其分配了文本。

然后将文本目标range设置为内容控制范围的after,并附加文本“追加”。

代码

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

  });

结果

https://i.stack.imgur.com/gQb5Q.png

© www.soinside.com 2019 - 2024. All rights reserved.