Автоматизация рутины в OS X. Урок 10. Анализируем собственную продуктивность

Эта статья написана для людей, которые постоянно используют приложение «Напоминания» в OS X и iOS для личного планирования. Она расскажет как с помощью JavaScript Automation собрать данные о завершенных делах и провести анализ собственной продуктивности. После ее прочтения и выполнения нижеприведенного кода на своем компьютере читатель научится основам взаимодействия приложения «Напоминания» c JavaScript и, возможно, узнает что-то новое и интересное о самом себе.
Что мы будем делать?
Напишем скрипт, который занесет данные о завершенных задачах в электронную таблицу и вычислит самое продуктивное время суток, день недели и месяц года.
Куда писать Java Script код?
- Открыть программу «Редактор скриптов» (Программы -> Утилиты).

- В верхнем меню выбрать Файл -> Новый.

- На переключателе языков выбрать JavaScript.

Как получить информацию о напоминании?
Для начала научимся обращаться к отдельному напоминания с помощью JavaScript и разберем методы, которые позволят получить информацию о нем:
//Создаем переменную для приложения «Напоминания»
var Doings = Application("Напоминания");
//Получаем заголовок напоминания
Doings.reminders[1].name();
Собрать информацию о напоминании можно с помощью следующих методов:
- id: идентификационный номер;
- body: текст напоминания;
- completed: завершено ли дело;
- completion date : дата завершения дела;
- creation date: дата создания напоминания;
- due date : дата предполагаемого завершения дела;
- priority — приоритет дела (обозначается целым числом).
Как записать информацию о напоминания в таблицу?
Теперь создадим таблицу в Numbers со следующими полями:
- название дела;
- дата создания дела;
- дата предполагаемого завершения дела;
- дата реального завершения дела.
И напишем скрипт, который будет заносить в нее данные:
//Создаем переменные для приложений Напоминания и Numbers
var Doings = Application("Напоминания");
Numbers = Application("Numbers");
//Открываем электронную таблицу для записи информации о сделанных делах
var path = Path("/Users/irina/Desktop/Doings.numbers");
var doc = Numbers.open(path);
var sheet = doc.sheets[0];
var table = sheet.tables[0];
//Перебираем все дела
for (i=0;i<=Doings.reminders.length-1;i++) {
//Номер ряда в электронной таблице равен итерации цикла + 2
j=i+2;
//Проверяем является ли текущая задача выполненной
if(Doings.reminders[i].completed()==true)
{ //В первый столбец записываем название дела
table.cells["A"+j].value=Doings.reminders[i].name();
//Во второй столбец дату создания дела
table.cells["B"+j].value=Date(Doings.reminders[i].creationDate()).toString();
//В третий планируемую дату завершения
table.cells["C"+j].value=Date(Doings.reminders[i].dueDate()).toString();
//В четвертый фактическую дату завершения
table.cells["D"+j].value=Date(Doings.reminders[i].completionDate()).toString();
}
}
Как вычислить самое продуктивное время суток?
Эти данные теперь можно анализировать вдоль и поперек. К примеру, определить, в котором часу завершается больше всего дел. Для начала напишем простенький скрипт, который будет записывать часы завершения дел в отдельный столбец:
//Перебираем все завершенные дела
for (i=0;i<=Doings.reminders.length-1;i++)
{
j=i+2;
if(Doings.reminders[i].completed()==true)
{ //Узнаем про каждое дело в котором часу оно было завершено и записываем в столбец E
table.cells["E"+j].value=Doings.reminders[i].completionDate().getHours();
}
}Теперь необходимо выяснить, какое значение встречается в крайнем столбце чаще всего. Для этого мы будем использовать статистическую функция МОДА().
Пользоваться ей очень просто. Надо в ячейке набрать знак «=» +»МОДА» и выделить диапазон, для которого будет производиться поиск самого часто встречающегося значения.
Таким образом мы выяснили, что самое продуктивное время — 20.00.
Как вычислить самый продуктивный день недели?
Чтобы узнать самый продуктивный день недели необходимо немного модифицировать центральную строчку в нашем скрипте для сбора данных. Вместо метода getHours() применить метод .getDay().
table.cells["E"+j].value=Doings.reminders[i].completionDate().getDay();
Этот метод возвращает значения дня недели в числовом формате, где 0 соответствует воскресенью, единица понедельнику, а 6 субботе.
Предыдущие публикации из цикла «Автоматизация рутины в OS X» вы можете найти по следующим ссылкам:
- Автоматизация рутины в OS X. Урок 1. Пакетная обработка изображений
- Автоматизация рутины в OS X. Урок 2. Генерация слайдов для презентаций
- Автоматизация рутины в OS X. Урок 3. Рассылаем спам
- Автоматизация рутины в OS X. Урок 4. Простейший парсинг почтового ящика
- Автоматизация рутины в OS X. Урок 5. Пакетная конвертация текстовых файлов
- Автоматизация рутины в OS X. Урок 6. Простейший парсинг веб-страниц
- Автоматизация рутины в OS X. Урок 7. Пакетная конвертация видео и аудио
- Автоматизация рутины в OS X. Часть 8. Архивируем и анализируем записи из «Заметок»
- Автоматизация рутины в OS X. Часть 9. Пакетная архивация файлов
Что полезно знать:
- Как записать видео с экрана айфона
- Как отключить вибрацию на iPhone при уведомлениях
- Как заблокировать неизвестный номер на айфоне
✅ Подписывайтесь на нас в Telegram, Max, ВКонтакте, и Яндекс.Дзен.

