Squeak.ru - шаблоны программирования

Ошибка при запуске файла jsx из Indesign для экспорта каждого текстового фрейма в виде файла .txt.

В прошлом году мой коллега помог создать скрипт для Indesign.

Впоследствии, после обновления системы, у нас больше нет скрипта, так как Indesign CS6 был переустановлен, все, что у нас есть, это версия, как показано ниже.

Используя этот код в Adobe Indesign для экспорта каждого текстового фрейма, который начинается с определенной таблицы стилей абзаца «ЗАГОЛОВОК ПРОДУКТА», однако я получаю сообщение об ошибке при запуске скрипта...

Скрипт основан на файле ExportAllStories.jsx, входящем в комплект поставки InDesign, а также на нескольких модах, найденных в Интернете.

//ExportAllStories.jsx
//An InDesign CS6 JavaScript
/*  
@@@BUILDINFO@@@ "ExportAllStories.jsx" 3.0.0 15 December 2009
*/
//Exports all stories in an InDesign document in a specified text format.
//
//For more on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting/index.html
//or visit the InDesign Scripting User to User forum at http://www.adobeforums.com
//
main();
function main(){
    //Make certain that user interaction (display of dialogs, etc.) is turned on.
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    if(app.documents.length != 0){
        if (app.activeDocument.stories.length != 0){
            myDisplayDialog();
        }
        else{
            alert("The document does not contain any text. Please open a document containing text and try again.");
        }
    }
    else{
        alert("No documents are open. Please open a document and try again.");
    }
}
function myDisplayDialog(){
    with(myDialog = app.dialogs.add({name:"ExportAllStories"})){
        //Add a dialog column.
        myDialogColumn = dialogColumns.add()    
        with(myDialogColumn){
            with(borderPanels.add()){
                staticTexts.add({staticLabel:"Export as:"});
                with(myExportFormatButtons = radiobuttonGroups.add()){
                    radiobuttonControls.add({staticLabel:"Text Only", checkedState:true});
                    radiobuttonControls.add({staticLabel:"RTF"});
                    radiobuttonControls.add({staticLabel:"InDesign Tagged Text"});
                }
            }
        }
        myReturn = myDialog.show();
        if (myReturn == true){
            //Get the values from the dialog box.
            myExportFormat = myExportFormatButtons.selectedButton;
            myDialog.destroy;
            myFolder= Folder.selectDialog ("Choose a Folder");
            if((myFolder != null)&&(app.activeDocument.stories.length !=0)){
                myExportAllStories(myExportFormat, myFolder);
            }
        }
        else{
            myDialog.destroy();
        }
    }
}
//myExportStories function takes care of exporting the stories.
//myExportFormat is a number from 0-2, where 0 = text only, 1 = rtf, and 3 = tagged text.
//myFolder is a reference to the folder in which you want to save your files.
function myExportAllStories(myExportFormat, myFolder){
    for(myCounter = 0; myCounter < app.activeDocument.stories.length; myCounter++){
        myStory = app.activeDocument.stories.item(myCounter);
        myID = myStory.id;
        switch(myExportFormat){
            case 0:
                myFormat = ExportFormat.textType;
                myExtension = ".txt"
                break;
            case 1:
                myFormat = ExportFormat.RTF;
                myExtension = ".rtf"
                break;
            case 2:
                myFormat = ExportFormat.taggedText;
                myExtension = ".txt"
                break;
        }
        if (myStory.paragraphs[0].appliedParagraphStyle.name == "PRODUCT HEADING"){

              myFileName = myFileName.replace(/\s*$/,' ');
              myFileName2 = myFileName.replace(/\//g, ' ');
              myFilePath = myFolder + "/" + myFileName2;
            myFile = new File(myFilePath);
            myStory.exportFile(myFormat, myFile);
        }
    }
}

Это приводит к ошибке на

        if (myStory.paragraphs[0].appliedParagraphStyle.name == "PRODUCT HEADING"){

Любой совет будет принят во внимание.

В файле Indesign определенно есть блок текста со стилем PRODUCT HEADING (все заглавные буквы). Мы запускаем Indesign CS6, как и раньше

Благодарность!


Ответы:


1

Ваша проблема, скорее всего, связана с этой частью: myStory.paragraphs[0]. Если в рассказе нет абзацев, это даст вам ошибку. Вы можете добавить условие перед запуском этой строки, например:

if(myStory.paragraphs.length){
    if (myStory.paragraphs[0].appliedParagraphStyle.name == "PRODUCT HEADING"){

            myFileName = myFileName.replace(/\s*$/,' ');
            myFileName2 = myFileName.replace(/\//g, ' ');
            myFilePath = myFolder + "/" + myFileName2;
            myFile = new File(myFilePath);
            myStory.exportFile(myFormat, myFile);
        }
}
15.07.2015
  • Спасибо Жюльену, теперь я исправил код, который мы используем, и добавил в исходный пост выше, если он будет полезен кому-то еще в будущем... 20.07.2015
  • @PeteCardwell: пожалуйста, не надо (я откатил это редактирование). Назначение Stack Overflow — быть сайтом вопросов и ответов, поэтому редактирование вашего вопроса с целью включения ответа не очень полезно. Если ваша рабочая версия существенно отличается от того, что предложил Жюльен, вы всегда можете добавить ее в качестве подходящего альтернативного ответа. 20.07.2015
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...