Что ж, JXA — сломанный обфусцированный умирающий хлам, и AS тоже ненамного лучше, но ключевой момент, который нужно понять здесь, это то, что IPC событий Apple — это не ООП, это RPC + простой первоклассный реляционные запросы. Несмотря на синтаксический сахар, его ближайшим родственником на самом деле является программирование базы данных SQL, а не манипулирование DOM в браузере, поэтому, как только вы разберетесь с этим, [надеюсь] это начнет иметь немного больше смысла.
Приложение «AppleScriptable» представляет свои данные в виде сильно абстрагированного реляционного графа — «объектной модели событий Apple», — где каждый узел связан с другими узлами отношениями «один к одному» и/или «один ко многим». Не существует таких вещей, как «классы» или «объекты» в объектно-ориентированном смысле; это просто жаргон, который был добавлен для целей документации. Таким образом, то, что словарь приложения называет «свойством», представляет собой либо простой атрибут, содержащий примитивное значение (число, строку, список и т. д., например, свойство name
Finder file
), либо отношение «один к одному» (например, свойство current track
). из iTunes' application
), а то, что он называет "элементами", представляет собой отношение "один ко многим" (в вашем случае это libraryWindows
элементы объекта Papers application
).
Например, Papers.libraryWindows.displayedPublications.get()
должен возвращать список отображаемых публикаций каждого окна библиотеки в Papers (хотя то, работает ли это на практике, зависит от того, насколько хорошо реализована AEOM приложения, не говоря уже о собственных проблемах реализации JXA). ); или вы можете использовать различные справочные формы (по индексу, по имени и т. д., хотя некоторые из них не работают/не поддерживаются в JXA), чтобы сузить свой запрос, скажем, только до первого окна библиотеки, например. Papers.libraryWindows[0].displayedPublications.get()
.
Вы можете получить некоторую информацию, просмотрев документацию NodeAutomation, которая включает в себя приблизительный обзор AEOM и как собирать запросы, которые вы затем отправляете в него с помощью команд (удаленных вызовов процедур) для разрешения и обработки по своему усмотрению. Синтаксис JXA не такой красивый, и различные операции, которые отлично работают в AS, не работают в JXA, но это даст вам приблизительное представление.
Тем не менее, я настоятельно рекомендую придерживаться AppleScript. Язык бестолковый, но, по крайней мере, у него есть какая-то документация и сообщество пользователей, которые помогут вам сориентироваться в нем (даже если они не очень хорошо в нем разбираются).
person
has
schedule
15.01.2018