Скрипт Indesign для замены стиля абзаца

Я использую ID CC 2014 на Mac, и есть огромный файл с несколькими сотнями страниц, где мне нужно удалить определенный стиль абзаца, заменив его другим. Скажем, есть парастиль под названием «стиль-1». Когда я удаляю его с панели стилей параграфов, он просит меня указать другой стиль, который заменит фрагменты текста, которые в настоящее время имеют стиль «стиль-1». Здесь я добавляю, скажем, «стиль-2», чтобы занять его место. Есть ли способ автоматизировать процесс с помощью скрипта? Я попытался изучить FindTextPreferenceкласс JS, но, похоже, у него нет свойств, которые могут нам понадобиться в этом случае. Какие-нибудь советы?

Я не совсем понял. Насколько больше автоматического вы можете получить, чем метод удаления? ...метод удаления, который автоматически заменяет все вхождения одного стиля абзаца другим...
Когда вы удаляете стиль абзаца, вам также необходимо переназначить новый стиль, чтобы он занял его место. Я хочу автоматизировать процесс удаления стиля-1, а затем назначить текст (который до сих пор был оформлен как стиль-1) стилю-2. Так что да, это по крайней мере 4 клика мыши прямо здесь. Кроме того, в моем рабочем процессе мне придется повторить этот процесс для целого ряда стилей, так что да, автоматизация оправдана. Давайте сосредоточимся на «как», а не на «почему». Спасибо.
ОП довольно часто хотят одного, но на самом деле им нужно что-то другое. Когда кто-то спрашивает об автоматизации, казалось бы, автоматической функции в программном обеспечении, я скорее выясню, почему, чем просто слепо делаю, как говорит мастер.
Неважно. Я понял это и опубликовал свое решение для других. Спасибо за ваше время. Ваше здоровье.

Ответы (2)

Хорошо, я, наконец, сам нашел ответ и публикую его здесь для других. Хитрость заключается в вызове removeметода класса ParagraphStyle(точнее, удаляемого стиля абзаца). Синтаксис:

Old_Style.remove(New_Style);

В этом синтаксисе New_Styleаргумент является необязательным. Таким образом, для моего примера правильный код будет таким:

var old = app.activeDocument.paragraphStyles.itemByName("style-1"); var new = app.activeDocument.paragraphStyles.itemByName("style-2"); старый.удалить(новый);

Более подробную информацию о ParagraphStyleклассе можно найти по адресу http://jongware.mit.edu/idcsjs5.5/pc_ParagraphStyle.html .

Вы можете использовать этот скрипт.

    var myDoc = app.activeDocument;  

try {
myDoc.paragraphStyles.item("Old Still").remove("New Still");
} catch(e) {}

Если вы хотите заменить более одного стиля, просто продублируйте этот код и измените имена стилей.

try {
    myDoc.paragraphStyles.item("Old Still").remove("New Still");
    } catch(e) {}
Это решение уже включено в принятый ответ, пожалуйста, не повторяйте информацию. Есть много вопросов без ответов, которые могут принести пользу вашему времени.
Ну, в коде, который я написал, есть дополнительная функция. Если стиль абзаца не существует в документах, скрипт выдаст ошибку и перестанет работать. В моей версии скрипт проигнорирует любую ошибку и попытается заменить существующие стили абзаца.