JavaScript для автоматизации OS X
Рубрика: Программирование -> JavaScript -> OS X
Метки: Apple | AppleScript | Automator | JavaScript | Автоматизация | примеры | программирование
Просмотров: 3614
Вот за что я сразу полюбил OS X, так это за возможность тотальной автоматизации. Многие вещи легко настраиваются ручками, а рутинные действия автоматизируются при помощи встроенных инструментов. Главный инструмент для автоматизации - это Automator. Приложение имеет графический инструмент и совсем простые вещи реально сделать без единой строчки кода. Я вот с этой тулзой игрался несколько часов и до сих пор нахожусь в эйфории. Классный инструмент и жалко, что с Windows ничего подобного не поставляется.
Automator позволяет творить чудеса, но надо понимать, что без кода все равно трудно обойтись. У Apple есть свой простой язык программирования под названием AppleScript и вот его можно использоваться в купе с Automator. Правда если опыта работы с этим языком не было, то начать не так-то просто. Язык больше похож на человеческий, чем на привычный программисту.
К счастью, в Yosimite появилась возможность использовать вместо AppleScript знакомый каждому web-разработчику JavaScript. Такая привилегия снижает порог вхождения и уже через пару часиков вполне реально написать полезный скрипт. Например, чтобы запустить почтовую программу по умолчанию и сформировать письмо всего надо накорябать:
myMailApp = Application("Mail");
bodyTxt = "Привет, мен! Это пример отправки письма с помощью JS из OS X.\n\n"
+ "Все предельно просто и понятно.";
newMessage = myMailApp.OutgoingMessage().make();
newMessage.visible = true;
newMessage.content = bodyTxt;
newMessage.subject = "Письмо счастья";
newMessage.visible = true;
newMessage.toRecipients.push(myMailApp.Recipient({address: "a@iantonov.me", name: "Igor Antonov"}));
newMessage.toRecipients.push(myMailApp.Recipient({address: "info@iantonov.me", name: "bot"}));
newMessage.attachments.push(myMailApp.Attachment({ fileName: "/Users/spider_net/Downloads/\[rutracker.org\].t4878348.torrent"}));
myMailApp.outgoingMessages.push(newMessage);
myMailApp.activate();