Office.js Как вставить 2 элемента управления контентом, один в начале выделения и один в конце выделения - PullRequest
0 голосов
/ 27 августа 2018

В слове 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');

но я получаю сообщение об ошибке "Неверный аргумент".

1 Ответ

0 голосов
/ 27 августа 2018

Следующий фрагмент кода Script Lab работает для меня. Он использует три Ranges, хотя теоретически двух будет достаточно. В любом случае, оригинал Range (выборка) необходимо сохранить, чтобы можно было сначала получить позицию до выбора, а затем позицию после выбора.

Этот код использует "Start" и "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();
        })
    }
...