[ID CC-CC2022] Простой вопрос - как вызвать из скрипта другой скрипт?

hulk1776

Топикстартер
15 лет на форуме
Сообщения
738
Реакции
21
По #include - понятно. '8)'
Но если надо делать массовые замены по списку, не толкать же все в include.
К примеру, есть скрипт, скажем, Zameny. Запускается стандартно в любой момент. Но как бы сделать так, чтобы можно было его вызывать/запускать из другого скрипта?
В VBA есть команда Call. В Яве не вижу ничего аналогичного.
 
Application.doScript (script:varies, language: ScriptLanguage , withArguments:Array of any, undoMode: UndoModes , undoName: string ):any
 
  • Спасибо
Реакции: hulk1776
Оно работает!
Код:
var mScript = File("d:/Work/tests2.jsx");
app.doScript(mScript);
Я плачу... *(
 
А откуда грусть-тоска?
Это слезы радости. Давно надоело таскать кучи кода из скрипта в скрипт. Наконец-то можно делать вызов (раньше не получалось [по тупости]).
 
Последнее редактирование:
Спасибо. Давно переживал, что в Индизайне нет аналога пижамковского Autosave on/off. Этой командой можно было отключить сохранение промежуточных копий при каждом движении клавиши или даже перелистывании страницы. Правда при сбое восстановиться было не из чего. Зато работа значительно убыстрялась. Вот и в Индизайне обнаружилось нечто из этой области.
 
Последнее редактирование:
Оно работает!
Код:
var mScript = File("d:/Work/tests2.jsx");
app.doScript(mScript);
Я плачу... *(
Добрый день.
По этому примеру попробовал.
Само по себе вот это работает (если сохранить только эти строки и запустить).

JavaScript:
var mScript = File("C:/Users/Home/AppData/Roaming/Adobe/InDesign/Version 14.0/en_US/Scripts/Scripts Panel/Основные/SigningAndRename_3.0.jsx");
app.doScript(mScript);

Но почему то не отрабатывает в скрипте который ниже. Путь к скрипту менял на самый короткий без кириллицы. Без разницы. Подскажите пожалуйста в чем причина?

JavaScript:
var w = new Window("dialog");
w.alignChildren = "left";
var radio1 = w.add("radiobutton", undefined, "Первый");
var radio2 = w.add("radiobutton", undefined, "Второй");
var radio3 = w.add("radiobutton", undefined, "Третий");
var radio4 = w.add("radiobutton", undefined, "Четвертый");
var radio5 = w.add("radiobutton", undefined, "Пятый");
radio1.value = true;

// Обработчик нажатия на кнопку OK
w.add("button", undefined, "OK").onClick = function() {
  if (radio1.value) {
    // Действия при выборе кнопки "Первый"

var mScript = File("C:/Users/Home/AppData/Roaming/Adobe/InDesign/Version 14.0/en_US/Scripts/Scripts Panel/Основные/SigningAndRename_3.0.jsx");
app.doScript(mScript);
 
    alert("Выбрана кнопка Первый");
      
  } else if (radio2.value) {
    // Действия при выборе кнопки "Второй"
    alert("Выбрана кнопка Второй");
  } else if (radio3.value) {
    // Действия при выборе кнопки "Третий"
    alert("Выбрана кнопка Третий");
  } else if (radio4.value) {"Четвертый"
    alert("Выбрана кнопка Четвертый");
  } else if (radio5.value) {
    // Действия при выборе кнопки "Пятый"
    alert("Выбрана кнопка Пятый");
  }
}

w.show();
 
Потому что вызов скрипта внутри обработчика кнопки.
Не пытайтесь обмануть систему, пока на экране висит модальное окно, другой скрипт вы не запустите.
 
  • Спасибо
Реакции: Chursin Viktor
А если не просто алерт, а чтото в документе менять?
 
А если не просто алерт, а чтото в документе менять?
С документом модальное окно работать не даст :)
Поэтому да, по нормальному нужно
JavaScript:
#targetengine "session";
var w = new Window("palette");
Но скрипт-то запустить оно позволяет :)
 
Последнее редактирование:
  • Спасибо
Реакции: Chursin Viktor