[ID CS4-CS6] Верстка данных из эксель в InDesign

ANDRju

Участник
Топикстартер
Сообщения
15
Реакции
0
Коллеги, добрый день.

Помогите, пожалуйста, с решением такой задачи.

Есть вёрстка издания разделенная на 3 отдельных InDesign файла (версия 5.5). Вёрстка представляет собой набор таблиц с номерами продуктов и их описанием.
Есть таблица в эксель с 2-мя колонками: номер продукта и артикль (А или В)
Нужно, чтобы артикль из эксель таблицы соответствовал номеру продукта в верстке. В верстке уже как-то расставлены арктикли, но не факт, что правильно. В верстке артикль заверстан как символ с верхним индкесом (сноска) к номеру продукта.

Нужен скриптик, который присвоит верные артикли из экселя номерам продукта в вёрстке.
И сколько это это будет стоить?

Спасибо.
 

Gad

Сообщения
2 970
Реакции
1 402
Покажите образец, по которому будет понятно что у Вас там. Желательно в idml.
 

Gad

Сообщения
2 970
Реакции
1 402
То есть я верно понимаю, что арт. может быть как указан неверно, так и не указан совсем и тогда его нужно добавить, а в таблице не все номера, а только те, которые с артикулом?
 

ANDRju

Участник
Топикстартер
Сообщения
15
Реакции
0
Да, всё верно!
 

NNN5

Модератор
15 лет на форуме
Сообщения
1 256
Реакции
1 012
Тут не нужен скрипт. Всё просто - если у вас таблица одна, продолжающаяся на нескольких страницах.

1. Берёте из InDesign столбец с сомнительными номерами.
2. Копируете его в Excel.
3. Разбиваете по столбцам (Данные > Текст по столбцам)
4. Делаете проверку по списку с ВПР в ваших эталонных данных.
5. Сцепляете номер с верной буквой, полученной с помощью проверки.
6. Возвращаете текст в InDesign.
7. В InDesign этот текст форматируете одним абзацным стилем с помощью grep-стилей - буква в суперскрипт.

Всего и делов-то (C).
 
  • Спасибо
Реакции: iv-mi

Gad

Сообщения
2 970
Реакции
1 402
Делаете проверку по списку с ВПР в ваших эталонных данных
И тут начинается самое веселье '))' Ибо порядок в эталонных данных не соответствует порядку в таблице. Вероятно и можно приспособиться обладая нехилым скилом работы в мсофисе, либо писать скрипт, но уже под Excel... Если не прав, покажите на примере ТС пожалуйста :)
 
  • Спасибо
Реакции: Skvoznyak

NNN5

Модератор
15 лет на форуме
Сообщения
1 256
Реакции
1 012
А причём тут порядок? Для ВПР это неважно совершенно.
 

Вложения

  • _MY.zip
    100.8 КБ · Просм.: 137
  • Спасибо
Реакции: Gad

ANDRju

Участник
Топикстартер
Сообщения
15
Реакции
0
Тут не нужен скрипт. Всё просто - если у вас таблица одна, продолжающаяся на нескольких страницах.

1. Берёте из InDesign столбец с сомнительными номерами.
2. Копируете его в Excel.
3. Разбиваете по столбцам (Данные > Текст по столбцам)
4. Делаете проверку по списку с ВПР в ваших эталонных данных.
5. Сцепляете номер с верной буквой, полученной с помощью проверки.
6. Возвращаете текст в InDesign.
7. В InDesign этот текст форматируете одним абзацным стилем с помощью grep-стилей - буква в суперскрипт.

Всего и делов-то (C).
К сожалению, в InDesign на каждой странице по несколько таблиц и всего таких страниц около 500, поэтому издание разбито на 3 отдельных файла. Скопировать таблицы в эксель из верстки точно не выход :(
 

Gad

Сообщения
2 970
Реакции
1 402
в эксель из верстки точно не выход
Код:
#target indesign
app.scriptPreferences.version = 8.0;
if (app.documents.length != 0 & app.selection.length != 0) {
    if (app.selection[0].constructor.name == "Cell") {
        var file = File.openDialog();
        file.open("r");
        var numArt = file.read().replace().split('\n');
        var doc = app.activeDocument;
        var mySelObj = doc.selection[0];
        var sCells = mySelObj.cells;
        var sCol = mySelObj.columns;
        for (var n = 0; n < sCells.length; n++) {
            cCont = sCells[n].contents;
            fr = findReplace (cCont, numArt);
            if (fr) {
                sCells[n].contents = fr;
            };
        };
    }     else { alert ("Selection is not a table cell.\nHighlight cells and try again.")    };
}     else { alert ("The script works with dedicated table cells!\nHighlight cells and try again.") };


function findReplace (cellContent, arrReplace) {
    var content = false;
    for (var i = 0; i < arrReplace.length; i++) {
        fCont = cellContent.replace(/\D/g, "");
        if (String(arrReplace[i].split('\t')[0]) == fCont & String(arrReplace[i].split('\t')[0]) != ""){
            content = String(arrReplace[i].split('\t')[0] + " " +arrReplace[i].split('\t')[1]);
        };
    };
    return content;
};
Входящими данными являются выделенные ячейки в ID и эталон в CSV
Если в таблице арт присутствует а в эталоне нет, то арт останется без изменений, т.е. перед началом работы их бы удалить надо :)
 
Последнее редактирование: