[ID CC2024] Прикрепление определенных ячеек Excel к текстовому фрейму

  • Автор темы Автор темы KegP
  • Дата начала Дата начала
Да. Сделайте шаблон под каждый макет, еще лучше сделайте все макеты в одном шаблоне и получайте все сразу, за один раз.
Понял, но... При повторном запуске скрипта получаю это:
 

Вложения

  • 2.png
    2.png
    4.4 КБ · Просм.: 18
Понял, но... При повторном запуске скрипта получаю это:
:)) Что логично, ведь записей в формате <<Номер колонки:Номер строки>> перед запуском скрипта у Вас не было, что же ему искать?:)
 
JavaScript:
#target indesign
var doc = app.activeDocument;
var pathFile = doc.extractLabel("pathFile");
var file = File(pathFile).openDlg("Select a table with data in .csv format", "*.csv");

if (file) {
    doc.insertLabel ("pathFile", file);
    file.open("r");
    var row = file.read().split('\n');
    file.close;
};

if (row) {
    app.generalPreferences.pageNumbering = PageNumberingOptions.SECTION;
    app.doScript(main, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, 'InsertDataTable');
};

function main(){
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;  
    app.findGrepPreferences.findWhat = "<<\\d+:\\d+>>";
    var findResults = doc.findGrep();
    if (findResults.length > 0) {
        var idTextArr = [];
        for ( var i = 0; i < findResults.length; i++ ) {
            idTextArr.push(findResults[i].contents);
        };
        idTextArr = arrayCompress(idTextArr);
        for ( var i = 0; i < idTextArr.length; i++ ) {
            var id = idTextArr[i].replace(/<</g, "").replace(/>>/g, "");
            var r = --id.split(":")[1];
            var c = --id.split(":")[0];
            app.findGrepPreferences.findWhat = idTextArr[i];
            app.changeGrepPreferences.changeTo = row[r].split('\t')[c];
            doc.changeGrep();
        };
    } else { alert ("The replaced sections of text in the format\n<<ColumnNumber:RowNumber>> not found")};
};
   
function arrayCompress(array){
 var str = array.sort().join('\r')+'\r';
 str = str.replace(/([^\r]+\r)(\1)+/g,'$1');
 str = str.replace(/\r$/,'');
 return str.split('\r');
};

Не по теме:
84f5ef072c3f61a44d78d4c0231ae81b.jpg

 
:)) Что логично, ведь записей в формате <<Номер колонки:Номер строки>> перед запуском скрипта у Вас не было, что же ему искать?:)
Понимаю. Получается, что после запуска скрипта, данные подставляются и стирается формат записи (аля <<1:3>>). Посему, что бы обновить данные придётся заново приводить к формату записи работы скрипта (аля <<1:3>>)?
 
придётся заново приводить к формату записи
Зачем? Один раз сделать, сохраните в .indt например, он у вас таким и останется. Просто каждый раз будете менять и подсовывать измененный csv. Еще раз, я бы собрал все макеты в один файл...
 
Последнее редактирование:
Зачем? Один раз сделать, сохраните в .indt например, он у вас таким и останется. Просто каждый раз будете менять и подсовывать измененный csv. Еще раз, я бы собрал все макеты в один файл...
Ааа, понял.
Отличное решение. Спасибо огромное - то что нужно.
Куда задонатить можно за потраченное вами время?
 
Последнее редактирование:
  • Спасибо
Реакции: ~RA~