Скрипт InDesign не работает при добавлении диалогового окна

Я пытаюсь создать скрипт на основе GREP, который заменяет шрифты в нелатинских символах совместимым шрифтом, но когда я добавляю его в диалоговое окно, он больше не работает (работает сам по себе). Я определил точку, где он перестает работать, и она находится между этими двумя строками:

var options = app.findChangeGrepOptions.properties;

app.findGrepPreferences = NothingEnum.NOTHING;

При отладке сценария я получаю следующую ошибку: Ошибка выполнения: код ошибки № 30486: не удается обработать запрос, поскольку активен модальный диалог или оповещение.

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

var dialog = new Window("dialog"); 
    dialog.text = "Asian font replacement"; 
    dialog.orientation = "column"; 
    dialog.alignChildren = ["center","top"]; 
    dialog.spacing = 10; 
    dialog.margins = 16; 

// GROUP1
// ======
var group1 = dialog.add("group", undefined, {name: "group1"}); 
    group1.orientation = "row"; 
    group1.alignChildren = ["left","center"]; 
    group1.spacing = 10; 
    group1.margins = 0; 

var statictext1 = group1.add("statictext", undefined, undefined, {name: "statictext1"}); 
    statictext1.text = "Select the language"; 

var languages_array = ["-","Japanese","Simplified Chinese","Traditional Chinese","Korean","Thai"]; 
var languages = group1.add("dropdownlist", undefined, undefined, {name: "languages", items: languages_array}); 
    languages.selection = 0; 
    languages.preferredSize.width = 88; 

// GROUP2
// ======
var group2 = dialog.add("group", undefined, {name: "group2"}); 
    group2.orientation = "row"; 
    group2.alignChildren = ["left","center"]; 
    group2.spacing = 10; 
    group2.margins = 0; 

var Closebutton = group2.add("button", undefined, undefined, {name: "Closebutton"}); 
    Closebutton.text = "Cancel"; 
    Closebutton.justify = "left"; 
    Closebutton.alignment = ["left","top"]; 

var Runbutton = group2.add("button", undefined, undefined, {name: "Runbutton"}); 
    Runbutton.text = "Run"; 
    Runbutton.alignment = ["left","bottom"]; 


Runbutton.onClick = function(){
    if (languages.selection == "1")
{
    dialog.close();
    JP();
    alert("Font has been applied")  
}
    if (languages.selection == "4")
{
    dialog.close();
    KO();  
    alert("Font has been applied")
}
};

//Japanese GREP

function  JP() {
    if (app.layoutWindows.length == 0) return;
    var changeObject = app.documents[0];
    if (changeObject.hasOwnProperty('characters') && changeObject.characters.length == 0) return;
    var doc = app.documents[0];
    var style;
    var scriptVersion = app.scriptPreferences.version;
    app.scriptPreferences.version.constructor.name // Result:String
    var options = app.findChangeGrepOptions.properties;
    //it stops here
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    
// Query [[JP_black]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Black"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_bold]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Bold"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_bolditalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Bold", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_heavy]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Heavy"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_italic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Regular ", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_light]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Light"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_lightitalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Light", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_reg]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Regular"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Regular "});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_semib1]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semi Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_semib2]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semibold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findChangeGrepOptions.properties = options;
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    app.scriptPreferences.version = scriptVersion;
};

function getStyleByString(docOrGroup, string, property) {
    if (string == '[No character style]') return docOrGroup[property][0];
    if (string == '[No paragraph style]') return docOrGroup[property][0];
    if (string == 'NormalParagraphStyle') return docOrGroup[property][1];
    stringResult = string.match (/^(.*?[^\\]):(.*)$/);
    var styleName = (stringResult) ? stringResult[1] : string;
    styleName = styleName.replace (/\\:/g, ':');
    remainingString = (stringResult) ? stringResult[2] : '';
    var newProperty = (stringResult) ? property.replace(/s$/, '') + 'Groups' : property;
    var styleOrGroup = docOrGroup[newProperty].itemByName(styleName);
    if (remainingString.length > 0 && styleOrGroup.isValid) styleOrGroup = getStyleByString (styleOrGroup, remainingString, property);
    return styleOrGroup;
};

// KO GREP
function KO() {
    if (app.layoutWindows.length == 0) return;
    var changeObject = app.documents[0];
    if (changeObject.hasOwnProperty('characters') && changeObject.characters.length == 0) return;
    var doc = app.documents[0];
    var style;
    var scriptVersion = app.scriptPreferences.version;
    app.scriptPreferences.version = 15.1;
    var options = app.findChangeGrepOptions.properties;
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_black]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Black"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_bold]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Bold"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_bolditalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Bold", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_heavy]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Heavy"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_italic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Regular ", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_light]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Light"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_lightitalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Light", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_reg]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Regular"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Regular "});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_semib1]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semi Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_semib2]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semibold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findChangeGrepOptions.properties = options;
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    app.scriptPreferences.version = scriptVersion;
};

function getStyleByString(docOrGroup, string, property) {
    if (string == '[No character style]') return docOrGroup[property][0];
    if (string == '[No paragraph style]') return docOrGroup[property][0];
    if (string == 'NormalParagraphStyle') return docOrGroup[property][1];
    stringResult = string.match (/^(.*?[^\\]):(.*)$/);
    var styleName = (stringResult) ? stringResult[1] : string;
    styleName = styleName.replace (/\\:/g, ':');
    remainingString = (stringResult) ? stringResult[2] : '';
    var newProperty = (stringResult) ? property.replace(/s$/, '') + 'Groups' : property;
    var styleOrGroup = docOrGroup[newProperty].itemByName(styleName);
    if (remainingString.length > 0 && styleOrGroup.isValid) styleOrGroup = getStyleByString (styleOrGroup, remainingString, property);
    return styleOrGroup;
};



dialog.show();

person Miguel Camacho    schedule 02.07.2020    source источник


Ответы (1)


Рефакторинг скрипта (ниже) включает следующие изменения:

  1. Вся ваша логика для диалогового окна ScriptUI теперь находится внутри функции createConfigDialog.

    • В теле функции createConfigDialog мы также определяем переменную hasChosen, т.е.

      var hasChosen = undefined;
      
    • В обработчике событий onClick мы присваиваем результат того, что выбрал пользователь, переменной hasChosen. Например:

      Runbutton.onClick = function() {
          if (languages.selection.text === "Japanese") {
              hasChosen = "Japanese";
          }
          if (languages.selection.text === "Korean") {
              hasChosen = "Korean";
          }
          dialog.close();
      };
      
    • Наконец, createConfigDialog возвращает объект со свойством hasChosen. Его значение равно Japanese или Korean. Например:

      return {
          hasChosen: hasChosen
      }
      
  2. В функции main (IIFE) мы вызываем функцию createConfigDialog.

    • Затем условно вызовите функцию JP() или KO() в соответствии с возвращенным значением свойства hasChosen. Например:

      (function main() {
      
          var dialog = createConfigDialog();
      
          if (dialog.hasChosen === "Japanese") {
              JP();
              alert("Font has been applied")
          } else if (dialog.hasChosen === "Korean") {
              KO();
              alert("Font has been applied")
          }
      
      }());
      

Полный рефакторинг скрипта:

function createConfigDialog() {

    var dialog = new Window("dialog");
        dialog.text = "Asian font replacement";
        dialog.orientation = "column";
        dialog.alignChildren = ["center","top"];
        dialog.spacing = 10;
        dialog.margins = 16;

    // GROUP1
    // ======
    var group1 = dialog.add("group", undefined, {name: "group1"});
        group1.orientation = "row";
        group1.alignChildren = ["left","center"];
        group1.spacing = 10;
        group1.margins = 0;

    var statictext1 = group1.add("statictext", undefined, undefined, {name: "statictext1"});
        statictext1.text = "Select the language";

    var languages_array = ["-","Japanese","Simplified Chinese","Traditional Chinese","Korean","Thai"];
    var languages = group1.add("dropdownlist", undefined, undefined, {name: "languages", items: languages_array});
        languages.selection = 0;
        languages.preferredSize.width = 88;

    // GROUP2
    // ======
    var group2 = dialog.add("group", undefined, {name: "group2"});
        group2.orientation = "row";
        group2.alignChildren = ["left","center"];
        group2.spacing = 10;
        group2.margins = 0;

    var Closebutton = group2.add("button", undefined, undefined, {name: "Closebutton"});
        Closebutton.text = "Cancel";
        Closebutton.justify = "left";
        Closebutton.alignment = ["left","top"];

    var Runbutton = group2.add("button", undefined, undefined, {name: "Runbutton"});
        Runbutton.text = "Run";
        Runbutton.alignment = ["left","bottom"];


    var hasChosen = undefined;

    Runbutton.onClick = function() {
        if (languages.selection.text === "Japanese") {
            hasChosen = "Japanese";
        }
        if (languages.selection.text === "Korean") {
            hasChosen = "Korean";
        }
        dialog.close();
    };

    var showDialog = dialog.show();

    if (showDialog === 2) { // User clicked `Cancel` button.
      exit();
    }

    return {
        hasChosen: hasChosen
    }
};

//Japanese GREP

function JP() {
    if (app.layoutWindows.length == 0) return;
    var changeObject = app.documents[0];
    if (changeObject.hasOwnProperty('characters') && changeObject.characters.length == 0) return;
    var doc = app.documents[0];
    var style;
    var scriptVersion = app.scriptPreferences.version;
    app.scriptPreferences.version.constructor.name // Result:String
    var options = app.findChangeGrepOptions.properties;
    //it stops here
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;

    // Query [[JP_black]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Black"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_bold]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Bold"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_bolditalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Bold", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_heavy]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Heavy"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_italic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Regular ", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_light]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Light"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_lightitalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Light", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_reg]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Regular"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Regular "});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_semib1]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semi Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[JP_semib2]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semibold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1248357235, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans JP", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findChangeGrepOptions.properties = options;
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    app.scriptPreferences.version = scriptVersion;
};

function getStyleByString(docOrGroup, string, property) {
    if (string == '[No character style]') return docOrGroup[property][0];
    if (string == '[No paragraph style]') return docOrGroup[property][0];
    if (string == 'NormalParagraphStyle') return docOrGroup[property][1];
    stringResult = string.match (/^(.*?[^\\]):(.*)$/);
    var styleName = (stringResult) ? stringResult[1] : string;
    styleName = styleName.replace (/\\:/g, ':');
    remainingString = (stringResult) ? stringResult[2] : '';
    var newProperty = (stringResult) ? property.replace(/s$/, '') + 'Groups' : property;
    var styleOrGroup = docOrGroup[newProperty].itemByName(styleName);
    if (remainingString.length > 0 && styleOrGroup.isValid) styleOrGroup = getStyleByString (styleOrGroup, remainingString, property);
    return styleOrGroup;
};

// KO GREP
function KO() {
    if (app.layoutWindows.length == 0) return;
    var changeObject = app.documents[0];
    if (changeObject.hasOwnProperty('characters') && changeObject.characters.length == 0) return;
    var doc = app.documents[0];
    var style;
    var scriptVersion = app.scriptPreferences.version;
    app.scriptPreferences.version = 15.1;
    var options = app.findChangeGrepOptions.properties;
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_black]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Black"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_bold]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Bold"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_bolditalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Bold Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Bold", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_heavy]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Heavy"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Heavy"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_italic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Regular ", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_light]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Light"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_lightitalic]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Light Italic"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Light", skew:11});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_reg]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Regular"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Regular "});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_semib1]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semi Bold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    // Query [[KO_semib2]] -- If you delete this comment you break the update function
    try {
        app.findChangeGrepOptions.properties = ({includeFootnotes:true, kanaSensitive:true, widthSensitive:true});
        app.findGrepPreferences.properties = ({findWhat:"[^.,;:?!-()%&\\[\\]\\d a-z|A-Z]+", fontStyle:"Semibold"});
        app.changeGrepPreferences.properties = ({kinsokuSet:1263692659, composer:"Adobe Japanese Paragraph Composer", appliedFont:"Source Han Sans KR", fontStyle:"Medium"});
        changeObject.changeGrep();
    } catch (e) {alert(e + ' at line ' + e.line)}
    app.findChangeGrepOptions.properties = options;
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
    app.scriptPreferences.version = scriptVersion;
};

function getStyleByString(docOrGroup, string, property) {
    if (string == '[No character style]') return docOrGroup[property][0];
    if (string == '[No paragraph style]') return docOrGroup[property][0];
    if (string == 'NormalParagraphStyle') return docOrGroup[property][1];
    stringResult = string.match (/^(.*?[^\\]):(.*)$/);
    var styleName = (stringResult) ? stringResult[1] : string;
    styleName = styleName.replace (/\\:/g, ':');
    remainingString = (stringResult) ? stringResult[2] : '';
    var newProperty = (stringResult) ? property.replace(/s$/, '') + 'Groups' : property;
    var styleOrGroup = docOrGroup[newProperty].itemByName(styleName);
    if (remainingString.length > 0 && styleOrGroup.isValid) styleOrGroup = getStyleByString (styleOrGroup, remainingString, property);
    return styleOrGroup;
};


(function main() {

    var dialog = createConfigDialog();

    if (dialog.hasChosen === "Japanese") {
        JP();
        alert("Font has been applied")
    } else if (dialog.hasChosen === "Korean") {
        KO();
        alert("Font has been applied")
    }

}());

Дополнительные примечания относительно стиля кода:

Согласно соглашению, имя переменной, начинающееся с заглавной буквы, например KO и JP, указывает, что это конструктор, поэтому ее следует вызывать с помощью new. Поскольку обе функции JP и KO не являются конструкторами в вашем коде, я предлагаю вам подумать о том, чтобы сделать их строчными, например. jp и ko соответственно (или, например, japan и korean).

Аналогично с Runbutton и Closebutton - измените их экземпляры, например, на runButton и closeButton соответственно, чтобы опустить заглавную первую букву.

person RobC    schedule 07.07.2020