Автоматизация рутины в OS X. Урок 16. Java Script Automation+Terminal+Apple Script = Сила

Автоматизация рутины в OS X. Урок 16. Java Script Automation+Terminal+Apple Script = Сила

В предыдущих 15 уроках мы говорили об автоматизации посредством JavaScript Automation и с помощью утилит командной строки. Но настоящая магия начинается при объединении этих двух способов и Apple Script. Эта статья о том, как подружить между собой три мощнейших инструмента автоматизации в OS X.

Зачем объединять командную строку, Java Script и Apple Script?

Есть вещи, которые нельзя автоматизировать на JXA, но можно с помощью командной строки. Есть вещи которые можно автоматизировать на JXA, но они уже давно автоматизированы на Apple Script и писать новый скрипт на другом языке пустая трата времени.

Приведем несколько теоретических примеров, когда необходимо объединение этих трех технологий в одной автоматизации:

Пример 1

С помощью JXA создаем несколько текстовых документов по шаблону, потом упаковываем их в архив и через программу на Apple Script, найденную в интернете, отправляем архив списку адресатов.

Пример 2

На JXA пишем парсер для сохранения картинок с веб-страницы, с помощью Image Magick делаем их черно-белыми, а после применив Apple Script, генерируем из них альбом в PDF.

Необходимость запускать за один раз сразу три автоматизирующих скрипта в подобных случаях — лишняя трата времени.

А теперь перейдем к практике.

Как выполнить команду в терминале с помощью JXA?

Запускаем скрипт на JXA из терминала

//Создаем переменную для приложения «Терминал»
Terminal = Application("Терминал");
//Запускаем команду ls, которая является аналогом команды dir, привычной для пользователей Linux и Windows и отображает список файлов и папок в текущей директории с помощью метода doScript();
Terminal.doScript("ls");

После выполнения скрипта откроется окно терминала и отобразится список файлов в корневой директории текущего пользователя. Чтобы выполнить новую команду в активном окне терминала надо еще раз вызвать метод doScript, а для выполнения команды в новом окне необходимо создать новую переменную для приложения «Терминал».

Terminal2 = Application("Терминал");
Terminal2.doScript("ls");

Два окна терминала

Как запустить JXA-скрипт из терминала?

Для примера напишем простенький скрипт из двух строк, который открывает новый текстовый файл:

//  Кладем в переменную приложение TextEdit
textEdit = Application("TextEdit");
// Создаем новый документ
var newDoc = textEdit.Document().make();

Теперь сохраним его в корневой директории активного пользователя. Сохраняем файл
Выбираем имя сохраненному файлу

После этого откроем терминал и наберем там следующую команду:

osascript opentext.scpt

В результате вышеописанный скрипт выполнится и откроется новое окно с пустым текстовым документом. Запускаем JXA из командной строки

Как запустить файл Apple Script из терминала?

Если JXA появилась только в 2014 году, в операционной системе OS X Yosemite и готовых скриптов в интернете очень и очень мало, то автоматизации на Apple Script создаются уже второй десяток лет и в открытом доступе есть десятки тысяч готовых решений на все случаи жизни. И их, безусловно, стоит объединять с командной строкой и JavaScript, чтобы сэкономить собственное время на написании кода.

Итак, давайте разберемся, как запустить файл, написанный на Apple Script из терминала.

Для примера напишем простенький скрипт, который открывает приложения Finder и сохраним его под именем «openFinder».

tell application "Finder"
 activate
make new Finder window
end tell

Программа на Apple Script
Открываем терминал и запускаем команду:

osascript openFinder.scpt

Запускаем Apple Script из командной строкиСоответственно, использовать Apple Script в JXA можно с помощью метода doScript:

Terminal = Application("Терминал");
Terminal.doScript("osascript openFinder.scpt");

Предыдущие публикации из цикла «Автоматизация рутины в OS X» вы можете найти по следующим ссылкам:

Еще айфоновские темы:


✅ Подписывайтесь на нас в Telegram, ВКонтакте, и Яндекс.Дзен.



Добавить комментарий