- Сообщения
- 811
- Реакции
- 726
Не по теме:
эх, всё самому, всё самому...
Скрипт глубокоуважаемого LeshikSan трогать не стал, сделал своё.
Положу сюда, вдруг кому-то.
JavaScript:
// Поиск-замена текста и GREP-выражений как функции. // densen 11.03.2023
// Значения в скобках: (Строка для поиска, Символьный стиль поиска, Абзацный стиль поиска, Строка для замены, Символьный стиль замены, Абзацный стиль замены),
// Если символьные и абзацные стили находятся вне групп, то можно подставлять имена в кавычках: "bold", "italic", "Main Text", "+8 points" и т.д.
// Если абзацные стили в группах, а пуще того в группах, расположенных в группах, то лучше вводить переменные для стиля и подставлять в скобки означенную переменную), например:
// var CPL_MT = app.activeDocument.paragraphStyleGroups.item("Article").paragraphStyles.item("Main Text"); // это переменная стиля, находящаяся в группе "Article"
// var CPL_DOI = app.activeDocument.paragraphStyleGroups.item("Article").paragraphStyleGroups.item("Head").paragraphStyles.item("DOI"); // Это переменная стиля, находящегося в группе "Head", которая в свою очередь расположена в группе "Article"
// Если нет какого-либо значения, то обязательно должно быть "null"
// Проверки на наличие в документе символьных или абзацных стилей отсутствуют. Если чего-то не будет, то выскочит ошибка. И это будет правильно.
// Символьный стиль "[None]" записывается как app.activeDocument.characterStyles[0] либо напрямую, либо через переменную
var myNoneChar = app.activeDocument.characterStyles[0]; // Символьный стиль "[None]"
// Следующие две строчки равнозначны
findchangeText("шило", "bold", null, "мыло", myNoneChar, null);
findchangeText("шило", "bold", null, "мыло", app.activeDocument.characterStyles[0], null);
// В строках GREP-поиска одинарная "\" во всех кодах символов обязательно должна быть сдублирована, чтобы вместо, например, привычного GREP-обозначения цифры \d это выглядело как \\d.
findchangeGREP("шило (\\d штук)", null, null, "мыло $1", null, null);
// Если в GREP-поиске нужно оставить найденное выражение без изменения, то в качестве строки для замены нужно поставить "$0"
//##############################################################
// Исходные строки текстового и GREP-поиска:
findchangeText(null, null, null, null, null, null);
findchangeGREP(null, null, null, null, null, null);
//##############################################################
// FUNCTIONS
function findchangeGREP (myFindString, myFindChar, myFindPara, myChangeString, myChangeChar, myChangePara)
{
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = myFindString;
app.findGrepPreferences.appliedCharacterStyle = myFindChar;
app.findGrepPreferences.appliedParagraphStyle = myFindPara;
app.changeGrepPreferences.changeTo = myChangeString;
app.changeGrepPreferences.appliedCharacterStyle = myChangeChar;
app.changeGrepPreferences.appliedParagraphStyle = myChangePara;
app.changeGrep();
}
function findchangeText (myFindString, myFindChar, myFindPara, myChangeString, myChangeChar, myChangePara)
{
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.findWhat = myFindString;
app.findTextPreferences.appliedCharacterStyle = myFindChar;
app.findTextPreferences.appliedParagraphStyle = myFindPara;
app.changeTextPreferences.changeTo = myChangeString;
app.changeTextPreferences.appliedCharacterStyle = myChangeChar;
app.changeTextPreferences.appliedParagraphStyle = myChangePara;
app.changeText();
}
В архиве он же, чтобы не копировать.