Какие конечные знаки следует использовать, чтобы расширить диапазон до конца абзаца?

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

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

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

endMarks строка [] Обязательный. Знаки препинания и / или другие знаки окончания в виде массива строк.

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

Я пробовал использовать '\ 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

Мы не смогли найти запрошенный вами товар.

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


person Donald I Macdonald    schedule 09.07.2019    source источник


Ответы (2)


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

person Rick Kirkham    schedule 09.07.2019

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

Хорошо, вот мой образец текстового документа:

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

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

И на этом урок. Аминь.

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

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.)

person Donald I Macdonald    schedule 10.07.2019