Выбор того или другого языка диктуется несколькими соображениями:
на платформе Macintosh существует только AppleScript;
для Windows выбор несколько шире: предлагаются Visual Basic и JavaScript.
Каждый из них имеет свои преимущества и недостатки.
Visual Basic - творение Microsoft, а потому имеет широчайший набор методов. Недостаток- совершенно не поддерживается на Macintosh. Этого недостатка лишен язык JavaScript. Он кроссплатформенный, т. е. будет работать в любой установленной системе. Его синтаксис отличается от Visual Basic, однако в силу того, что многие пользователи InDesign в той или иной степени сталкивались с Web-проектами, а потому уже хоть немного знакомы с языком.
В отличие от JavaScript, Visual Basic предоставляет гораздо более широкие возможности по автоматизации рабочих процессов, позволяя через ActiveX-компоненты обращаться к любым приложениям, зарегистрированным в системе - например, подключиться к Word, Excel, Access и т. п.
Visual Basic и AppleScript являются "полноценными" языками программирования, позволяя решать задачи системного уровня. Этого никак нельзя сказать о JavaScript, поскольку он ориентирован исключительно на использование возможностей той среды, в которой сценарии исполняются (в нашем случае - InDesign, который предоставляет JavaScript доступ к своим объектам, позволяя управлять их поведением).
Несмотря на определенные отличия между языками, способ их взаимодействия с InDesign совершено идентичен.
Объем функциональности JavaScript (текущая версия 1.5) определен в стандарте ЕСМА 262. Не утомляя читателей глубокими сведениями о нем, замечу лишь, что в нем продумано все, что требуется для полноценной и относительно комфортной работы. В данном случае речь идет лишь о возможности реализации тех или иных действий, без оценки эффективности инструментарт. Интересующимся могу порекомендовать ознакомиться с более продвинутыми спецификациями JavaScript 1.6 и 1.7, поддерживаемыми известным браузером FireFox.
Ядро JavaScript 1.5 состоит из небольшой группы фундаментальных объектов, среди которых- строки (Strings), массивы (Array), пользовательские функции (function) и математические функции (Math), управляющие структуры и операторы и др. Каждый объект имеет свои свойства и методы, которые и реализуют всю функциональность языка.
В целях безопасности в стандарт не включены некоторые механизмы - например, работа с файловой системой (создание, открытие, перемещение, удаление файлов и папок), запуск других программ и т. п., что хоть в какой-то мере служит сдерживанию распространения вирусов и всякого рода malware через интернет-браузеры. Соответственно, каждый разработчик ПО самостоятельно реализовывает недостающие компоненты в нужном объеме, исходя из принципа необходимой достаточности - естественно, вопросы обеспечения безопасности в таком случае также полностью возлагаются на него. Исходя из потребностей специалистов предпечатной подготовки, Adobe расширила определенные в стандарте средства JavaScript инструментами для доступа к файловой системе (редакция известна как ExtendScript).