[ID CC-CC2021] Поиск по тексту словосочетаний и назначение на них якорей

efodin

Топикстартер
12 лет на форуме
Сообщения
156
Реакции
10
Есть надобность в таком скрипте:
Поиск по тексту словосочетаний и назначение на них якорей.

Найти нужный текст и сделать из него якоря, у меня получилось. Дальше не хватает знаний решить такие вопросы:

1. Как передать в массив, arrSrchRes, все найденное. Например, ищем текст со стилем Normal, и передаем его в массив arrSrchRes.

2. Как получить массив из уже созданных якорей, arrAncRes.

3. Ну и собственно, как из массива arrSrchRes найти соответствие в массиве arrAncRes и присвоить якорь, TextAnchor.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
вы пишете - найти текст у вас получилось. то что нашли - это массив. если вы конечно скриптом искали, а не глазами по тексту.
 

efodin

Топикстартер
12 лет на форуме
Сообщения
156
Реакции
10
вы пишете - найти текст у вас получилось. то что нашли - это массив. если вы конечно скриптом искали, а не глазами по тексту.
Я искал через GREP. То есть нашел -- заменил. А мне нужно создать/получить масив.
Код:
app.findGrepPreferences.appliedParagraphStyle = "ХXX";
app.changeGrepPreferences.appliedCharacterStyle = "YYY";
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
метод, которым вы делаете замену - .changeGrep() - возвращает массив 'otbline'

Text.changeGrep (reverseOrder: Boolean ):Array of Text

Adobe InDesign 2020 (15.0) Object Model

Finds text that matches the find what value and replaces the text with the change to value.

reverseOrder: Data Type: Boolean

If true, returns the results in reverse order. (Optional)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
var myArray = myText.changeGrep();
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а напишите ваш код, как вы текст нашли
 

efodin

Топикстартер
12 лет на форуме
Сообщения
156
Реакции
10
Код:
app.findGrepPreferences.appliedParagraphStyle = "ХXX";
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Это ничего не ищет. Только установка атрибутов поиска

Полный код?
 

efodin

Топикстартер
12 лет на форуме
Сообщения
156
Реакции
10
Почему не ищет? Ищет. Ищет стиль абзаца с именем = "ХХХ"
 

veretragna

γνώσις
Сообщения
578
Реакции
199
Ванговать без полного кода сложновато.
 

efodin

Топикстартер
12 лет на форуме
Сообщения
156
Реакции
10
Ванговать без полного кода сложновато.
и как оно ищет, можете показать на примере?

Я затрудняюсь что-то сказать тогда… Наверное кода нет, тогда…

Есть череда поисков и замен основанная на:

Например:
Код:
app.findGrepPreferences.findWath = “GREP запрос”
app.changeGrepPreferences.fontStyle = "Italic";
или
Код:
app.findGrepPreferences.appliedParagraphStyle = "какой-то ParagraphStyle";
app.changeGrepPreferences.appliedCharacterStyle = "какой-то CharacterStyle";
Или нужно вот в таком виде написать:
Код:
var doc = app.activeDocument;
var sel = doc.selection[0];
var s = sel.parentStory;

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.appliedParagraphStyle = "Header";
app.changeGrepPreferences.appliedCharacterStyle = "header-anchor";
s.changeGrep();
alert("Finish");
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ну вот. В предпоследней строчке метод возвращает массив.
 

efodin

Топикстартер
12 лет на форуме
Сообщения
156
Реакции
10
Да, спасибо. Возвращает. Но вот если бы вы ответили на мой вопрос, вот это было бы чудесно.