Войти

Или войди с помощью

Познай мощь Automator. Работаем с БД

Ирина Чернова avatar |
Познай мощь Automator. Работаем с БД

С помощью встроенных средств OS X.

Продолжаем осваивать замечательное приложение Automator. Это уже четвертая статья цикла. А вот три предыдущие:

Эти материалы были «на разогрев», а теперь мы плавно приступаем к познанию истинной мощи Automator.

Чтобы делать реально полезные автоматизации, а не изобретать велосипеды наподобие скрипта для склевания pdf, бывает необходимо использовать внешние файлы с данными: адресные книги, таблицы с информацией о товарах, списки ссылок для парсинга и т. п.

Удобно хранить такую информацию в обычной реляционной базе данных и считывать оттуда SQL-запросами. В этом материале мы научимся делать это с помощью Automator.

Перед тем как использовать базу данных в автоматизирующих скриптах, ее надо где-то достать. Обычно, в подобных статьях прилагается файл с готовой базой для скачивания. Но я пойду другим путем и воспользуюсь случаем, чтобы рассказать об одной очень интересной фиче OS X.

Знали ли вы, что на маках есть возможность создавать базы данных SQLlite и делать к ним запросы из командной строки, без установки дополнительных программ?

Инструкция. Создаем базу данных SQLlite

1. Запускаем Программы -> Утилиты -> Терминал:
open_terminal

2. Создаем и открываем новую базу данных. Набираем:

sqllite3 my_contacts

Нажимаем Enter:

create_db

3. Создаем новую таблицу. Набираем:

create table problem_clients(first name text, surname text, email text);

Нажимаем Enter:

create_table

4. Добавляем в таблицу записи. Набираем:

insert into problem_clients values(“Иван”,”Иванов”,”ivanov@example.com”),(“Петр”,”Петров”,”petrov@example.com”),(“Сидор”,”Сидорович”,”sidorov@example.com”),(“Денис”,”Денисов”,”denisov@example.com”);

Нажимаем Enter:

insert_table

5. Просматриваем записи в таблице. Набираем:

select * from problem_clients;

Нажимаем Enter:

view_table

Готовый файл с базой данных хранится в корневом каталоге активного пользователя:

sqlite_base_in_finder

Его мы будем использовать для нашей автоматизации.

А теперь с помощью Automator создадим программу, которая будет считывать из базы адреса проблемных клиентов и отправлять их на нужный адрес электронной почты.

Пример очень упрощенный и надуманный, но после ознакомления с ним легко понять, каким образом Automator взаимодействует с базами данных.

Это понимание поможет вам организовать использование БД в собственных автоматизациях.

Инструкция. Как в Automator использовать данные из базы SQLlite

1. Открываем Программы->Automator и выбираем пункт меню Файл->Новый:

create_programm

2. Перетаскиваем на основное поле действие Получить указанные объекты Finder:

get_finder_object

3. Нажимаем на кнопку Добавить и выбираем файл с нашей базой:

select_database

4. Перетаскиваем на основное поле действие Выполнить SQL и вводим SQL-запрос для выбора email-адресов из базы:

select email from problem_clients;

execute_sql

5. Перетаскиваем на основное поле действие Получить значение переменной и в поле для указания имени переменной набираем mail_body (вы можете выбрать другое имя):
set_variable

6. Перетаскиваем на основное поле действие Новое сообщение Почты. Указываем адрес получателя и тему письма:

create_email

7. Перетаскиваем на основное поле действие Отправка исходящих сообщений:

send_emails

8. Запускаем скрипт и проверяем, отправилось ли письмо:

mail_is_sended

Для начала достаточно этой простой инструкции. К теме использования баз данных для автоматизаций мы еще не раз вернемся, когда будем говорить о написании скриптов для OS X на JavaScript, Apple Script и Shell Script.

Приложение. Отвечаем на вопросы читателей

В комментариях к прошлой статье об Automator читатели задали два очень интересных и актуальных вопроса, ответы на которые будут интересны не только им. Поэтому расскажем об их решение в завершение статьи:

osmanov_question

К сожалению, дату создания файла скриптами не поправишь (в справочнике это свойство описано как read only). А вот дату изменения можно ставить какую угодно. Предполагаю, что дату создания Вам нужно знать для фильтрации и сортировки картинок в поиске. И Вы с тем же успехом сможете использовать для этого дату изменения.

Вот один из вариантов решения проблемы:

1. Открываем Программы->Утилиты->Редактор скриптов. Выбираем язык JavaScript (по умолчанию выбран Apple Script).
choose_javascript

И вставляем следующий код:

[jscript]
Finder = Application("Finder");
fileArray = new Array();
// Здесь должен быть путь к папке с фотографиями
fileArray = Finder.startupDisk.folders.byName("Users").folders.byName("irina").folders.byName("cards").documentFiles;
// Перебираем все фотографии
for(i=0;i<=fileArray.length-1;i++)
{
// Записываем дату создания в комментарий
fileArray[i].comment = String(fileArray[i].creationDate());
}
[/jscript]

Запускаем скрипт и проверяем результат:

date_in_comment

УРА! Теперь дата создания записана в комментарий.

После этого можно скопировать фотографии в новое место хранения и запустить код для приписывания файлам нужных дат изменения:

[jscript]
Finder = Application("Finder");
fileArray = new Array();
// Здесь должен быть новый путь к папке с фотографиями
fileArray = Finder.startupDisk.folders.byName("Users").folders.byName("irina").folders.byName("new_cards").documentFiles;
// Перебираем все фотографии
for(i=0;i<=fileArray.length-1;i++)
{
// Ставим нужную дату изменения из комментария
fileArray[i].modificationDate=new Date(fileArray[i].comment());
}
[/jscript]

А вот вопрос от одного из авторов iPhones.ru:

arthem_question

Артем, у твоей задачи тоже есть решение на JavaScript.

Вот небольшая программка перебирает каждый файл в выбранной папке и проверяет, не влезет ли он на диск. И если место для него есть, то перемещает файл:

1. Открываем Программы->Утилиты->Редактор скриптов. Выбираем язык JavaScript (по умолчанию выбран Apple Script).
choose_javascript

И вставляем следующий код:

[jscript]
Finder = Application("Finder");
// Надо будет посмотреть через консоль какой id у флешки твоей и заменить. 0 – это Macintosh HD
fleshka=Finder.disks[0];
myFilms = new Array();
// Тут надо адрес папки с фильмами записать
myFilms=Finder.startupDisk.folders.byName("Users").folders.byName("irina").folders.byName("new_cards").documentFiles();
// Массив считается с единицы, так как 0 – DS_Store)
for(i=1;i<=myFilms.length-1;i++)
{
if(fleshka.freeSpace()>myFilms[i].size())
{
Finder.move(lastFilm, {to: fleshka});
// Обновляем массив, чтобы цикл не проходил по несуществующим элементам
myFilms=Finder.startupDisk.folders.byName("Users").folders.byName("irina").folders.byName("new_cards").documentFiles();
}
}
[/jscript]

Вот и все на сегодня. Продолжение следует. Если у вас есть какие-то задачи в OS X, которые вы хотите автоматизировать, пишите о них в комментариях, пожалуйста.

19
Логотип iPhones.ru
iPhones.ru
С помощью встроенных средств OS X. Продолжаем осваивать замечательное приложение Automator. Это уже четвертая статья цикла. А вот три предыдущие: Создаем «волшебные» папки в OS X для автоматической обработки картинок Три быстрых трюка для автоматизации работы с PDF в OS X 4 полезных инструкции по работе с Finder Эти материалы были «на разогрев», а теперь...

19 комментариев

Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик из TikTok
Котик из TikTok
Котик из TikTok
Котик из TikTok
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Видео мем
Видео мем
Видео мем
Видео мем
Видео мем
Видео мем

Какие правила в комментариях
  1. Артём Суровцев avatar
    Артём Суровцев 26 февраля 2016
    0

    Спасибо! Буду пробовать.

    Ирина Чернова avatar
    Ирина Чернова26 февраля 2016
    0

    @Артём Суровцев, будут вопросы ты знаешь куда писать)

    dennis1 avatar
    dennis126 февраля 2016
    0

    @Ирина Чернова, честно сказать не знаю…

    MatveyYo avatar
    MatveyYo26 февраля 2016
    0

    @dennis1, 12 картинка сверху не считая заголовка.
    Хороший способ, но навертели с этими вещами, что вот не понятно откуда должен узнать что отельные файлы обрабатываются по-особому и для них есть особый редактор. Непанятна!

    dennis1 avatar
    dennis126 февраля 2016
    0

    @MatveyYo, спасибо за наводку…Ира..Ира уже бегу…)))

    Ирина Чернова avatar
    Ирина Чернова26 февраля 2016
    0

    @MatveyYo, что вы имеете ввиду под отдельными файлами?

    MatveyYo avatar
    MatveyYo26 февраля 2016
    0

    @Ирина Чернова, csv файлам тоже можно делать запрос.

    Войди на сайт, чтобы ответить
    Ответить

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.