У меня есть программа AppleScript, которая создает признаки XML и элементы в рамках документа Adobe InDesign. Данные находятся в столах, и помечающий каждую клетку занимает.5 секунд. Весь сценарий занимает несколько часов, чтобы закончить.
Я могу опубликовать внутренний кодекс петли, но I' m не уверенный раз так, как предполагается, универсален или конкретен. I' ll позволяют толпе решить.
[отредактировать] Кодекс строит список (до этой петли), который содержит один пункт за ряд в столе. Есть также список, содержащий одну последовательность для каждой колонки в столе. Для каждой клетки программа создает элемент XML и признак XML, связывая пункты в [ряд] / [колонка] положения двух списков. Это также связывает текст в той клетке к недавно созданному элементу.
I' m абсолютно в новинку для AppleScript, таким образом, часть этого кодекса грубо изменена от Adobe' s образцы. Если кодекс зверский я won' t быть нарушенным.
Here' s кодекс:
repeat with columnNumber from COL_START to COL_END
select text of cell ((columnNumber as string) & ":" & (rowNumber as string)) of ThisTable
tell activeDocument
set thisXmlTag to make XML tag with properties {name:item rowNumber of symbolList & "_" & item columnNumber of my histLabelList}
tell rootXmlElement
set thisXmlElement to make XML element with properties {markup tag:thisXmlTag}
end tell
set contents of thisXmlElement to (selection as string)
end tell
end repeat
ОТРЕДАКТИРУЙТЕ: I' ve перефразировал вопрос лучше отразить правильный ответ.
Проблема - почти наверняка избранное. Есть ли так или иначе, Вы могли извлечь весь текст, сразу тогда повторяют по внутренним переменным?
Я понял этого.
Документ содержит связку таблиц данных. В целом, есть приблизительно 7 000 точек данных, которые должны быть экспортированы. Я создавал один элемент корня с 7 000 детей.
Don' t делают это. Добавление каждого ребенка к элементу корня стало медленнее и медленнее до приблизительно в 5 000 детей AppleScript, рассчитанный и прерванная программа.
Решение состояло в том, чтобы сделать мой кодекс более хрупким, создав ~480 детей от корня с каждым ребенком, имеющим приблизительно 16 внуков. То же количество узлов, но кодекс теперь бежит достаточно быстро. (Все еще требуется приблизительно 40 минут, чтобы обработать документ, но that' s бесконечно меньше времени, чем бесконечность.)
Кстати, оригинальные 7 000 детей планируют wasn' t столь глупый или ленивый, как это появляется. Новое решение вынуждает меня связать эти два стола, вместе используя данные в столах что я don' t контроль. Программа теперь сломается если there' s так как пространство, где там shouldn' t быть тем. (Но это работает.)
я могу опубликовать внутренний кодекс петли, но I' m не уверенный раз так, как предполагается, универсален или конкретен. I' ll позволяют толпе решить.
Кодекс, который Вы публикуете как пример, может быть столь же конкретным, как Вы (или Ваш босс) довольны - как правило, it' s легче помочь Вам с более определенными деталями.
Если внутренний кодекс петли - разумная длина, я don' t видят любые основания Вы can' t отправляют его. Я думаю, что Переполнение Стека предназначено, чтобы охватить оба общих и частных вопроса.
Вы используете InDesign или InDesign Server? Сколько страниц Ваш документ (или что другую информацию Вы можете сказать нам о Вашей установке документа/ID)?
Я делаю большую разработку InDesign Server. Вы могли видеть замедление по нескольким причинам, которые являются not' t обязательно кодируют связанный.
Прямо сейчас, I' m создание документов на 100-300 страниц почти полностью от script/xml приблизительно за 100 секунд (Вы можете делать что-то намного большее).