При наличии нескольких установленных InDesign ScriptEditor пытается определить, какая версия скрипта должна выполняться. Тем не менее, я пытаюсь высушить свой сценарий, чтобы мне приходилось менять имя приложения только один раз на протяжении всего сценария.
Есть похожий вопрос ( путь Applescript к приложению с использованием переменной ), но это не работает для всех. Вопрос в том, почему это не работает для всех?
Следующее работает как ожидалось:
tell application "Adobe InDesign CS5.5"
log name --"Adobe InDesign CS5.5.app"
log full name --"Mactastic:Applications:Adobe InDesign CS5.5:Adobe InDesign CS5.5.app:"
end
Немного СУШКИ:
set v to "Adobe InDesign CS5.5"
set a to application v
log name of a --"Adobe InDesign CS5.5"
log full name of a
--SYNTAX ERROR: Expected end of line, etc. but found property
--"name" is highlighted in the ScriptEditor
Вот еще один пример, который работает как ожидалось:
set f to (choose file)
tell application "Adobe InDesign CS5.5"
open f without showing window
end tell
Однако, это не скомпилируется, как раньше:
set f to (choose file)
set v to "Adobe InDesign CS5.5"
set a to application v
tell a
open f without showing window
end
--SYNTAX ERROR: Expected “given”, “with”, “without”, other parameter name, etc. but found class name.
--"window" is highlighted in the ScriptEditor
Мое окружение:
- OSX 10.6.8
- ScriptEditor 2.3 (118)
- Applescript 2.1.2
РЕДАКТИРОВАТЬ: Конечная игра в этом заключается в том, что я надеялся абстрагировать некоторые функции InDesign в свои собственные классы, например, так:
InDesign.scpt - класс, который абстрагирует функциональность InDesign
on new()
copy me to self
--do some initializing
return self
end new
on _version()
return "Adobe InDesign CS5.5"
end _version
on _application()
return application _version()
end _application
on _open(path)
tell _application() to open path without showing window
end _open
my_script.scpt - использует абстрагированный выше InDesign.scpt
set InDesign to (load script file ("my:path:to:scripts:" & "Indesign.scpt"))'s new()
InDesign's _open("my:path:to:indd:file.indd")
Вероятность того, что вышеописанное на самом деле невозможно в AppleScript и ObjectiveC, - это то, где я должен искать подобные вещи. Однако, кажется, что некоторые вещи работают как «сказать _application () об открытии пути», а «сказать _application () об открытии пути без отображения окна» - нет.