Какие конечные отметки следует использовать для расширения диапазона до конца абзаца? - PullRequest
0 голосов
/ 09 июля 2019

Я кодирую надстройку для слова и не ясно, как использовать метод getNextTextRange (endMarks, trimSpacing) класса Range.

В частности, я хочу выбрать новый диапазон, начиная с текущего выбранного диапазона и заканчивая концом абзаца.

API для состояний метода

endMarks string [] Необходимые. Знаки препинания и / или другие конечные метки в виде массива строк

Это достаточно ясно, если вы хотите выбрать до следующей запятой, точки или даже пробела. Но какие конечные знаки следует использовать для абзаца, переноса строки или конца документа?

Я пытался использовать '\ n', '^ p' и '¶', но, похоже, ничего из этого не работает.

          var nr = selection.getNextTextRange(['¶'],true);
           nr.load("isEmpty,text");
           await context.sync();
           console.log('nr='+nr.text);
         } catch(e) {
          console.log("error, soz");
          console.log(e);
         }

Учитывая документ, состоящий из одного абзаца текста с пустым абзацем после него и выделенным первым словом абзаца, эта надстройка выдает RichApi.Error

Не удалось найти запрошенный вами товар.

Я ожидаю, что вместо этого он распечатает оставшуюся часть абзаца.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Позвольте мне подробнее остановиться на ответе Рик-Киркхэма на случай, если он поможет кому-то еще в моей ситуации. Это в основном тот же ответ, что и здесь https://stackoverflow.com/a/51160690/4114053

Хорошо, вот мой пример документа Word:

Дождь в Испании падает. В основном на равнине.

Алиса шагнула в зеркало. Что она видела?

И там заканчивается урок. Аминь.

Пользователь выбирает "шагнул" во втором абзаце, и я хочу знать, что говорит текст для остальной части абзаца из этого слова. Я также хочу знать, что говорится в тексте до этого момента.

var doc = context.document;
var selection = doc.getSelection(); 
selection.load("isEmpty,text");
await context.sync();
console.log(selection.text); //prints stepped

var startRange = selection.getRange("start"); 
var endRange = selection.paragraphs.getLast().getRange("start");
var deltaRange = startRange.expandTo(endRange);
context.load(deltaRange);
await context.sync();
console.log(deltaRange.text); //prints "Alice"

startRange = selection.getRange("end"); 
endRange = selection.paragraphs.getLast().getRange("end");
deltaRange = startRange.expandTo(endRange);
context.load(deltaRange);

await context.sync();
console.log(deltaRange.text); // prints "through the looking glass. What did she see?"

Моя ошибка заключалась в том, что я слишком увлекся попытками понять, что могут означать "конечные отметки" и как их использовать для достижения этой цели. (Хотя я все еще хотел бы, чтобы это было изложено в спецификации API.)

0 голосов
/ 09 июля 2019

Если я понимаю ваш сценарий, вы можете работать с методом ParagraphCollection.getFirst () . Пожалуйста, установите инструмент Script Lab . Откройте образец под названием «Получить абзац от точки вставки» для примера.

...