Скрипт Indesign для автоматизации поиска/замены GREP

Этот вопрос вытекает из моего предыдущего вопроса о GREP и функциях поиска/замены InDesign. Подводя итог ситуации, мой документ InDesign имеет 3 стиля символов, примененных к тексту в разных местах: bold, italic, bolditalic. Названия этих стилей символов говорят сами за себя.

Я хочу написать скрипт, который ищет текст, стилизованный под любой из вышеперечисленных стилей символов, и заключает его в соответствующий HTML-тег. Например, я хочу, чтобы весь текст в стиле as boldбыл заключен в <b>...</b>теги и так далее. В моем предыдущем вопросе принятый ответ Jongware отлично объясняет, как выполнить поиск/замену вручную с помощью GREP. Теперь я хочу автоматизировать процесс, написав скрипт для его обработки. Вот моя первая попытка:

app.findGrepPreferences=app.changeGrepPreferences=null;
app.findGrepPreferences.appliedCharacterStyle="bold";
app.changeGrepPreferences.changeTo="<b>$0</b>";
app.activeDocument.changeGrep();

Это работает, за исключением того, что он переносит только первый символ затронутого текста в заданные теги и стирает остальные. Таким образом, текст типа «Это пример текста». изменено на «Это электронный текст». Что я делаю не так?

Ответы (1)

Неважно. Я заставил его работать с одной дополнительной строкой кода. Поместите измененный код сюда, чтобы кому-то еще было полезно:

app.findGrepPreferences=app.changeGrepPreferences=null;
app.findGrepPreferences.findWhat=".+";
app.findGrepPreferences.appliedCharacterStyle="bold";
app.changeGrepPreferences.changeTo="<b>$0</b>";
app.activeDocument.changeGrep();

Дополнительная строка, отсутствовавшая в моем исходном фрагменте, — это вторая:

app.findGrepPreferences.findWhat=".+";

Спасибо.

Как выполнить итерацию каждого совпавшего символа и применить условие, а затем заменить его?