Меня постоянно удивляла работа iCal с днями рождений. Они фиксируются в контактных данных, но кроме записи в календаре при включенной опции iCal “Show Birthdays calendar” пользы от них нет – я лично смотрю в календарь от силы пару раз в неделю. Никакие уведомления о приближении памятной даты не предусмотрены. В итоге приходится полагаться по-прежнему на память, чтобы не забыть дни рождения друзей. Т.е. вроде и есть информация, но она практически бесполезна.

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

“Пора что-то делать”, – сказал я себе. И приступил.

Есть способ, использующий штатные возможности iCal, он описан в статье “Add alarms to all existing iCal birthday events “. Используется скрипт на AppleScript, который в календаре Birthdays (он должен быть включён в iCal) добавляет алармы к дням рождений (я установил показывать аларм днём раньше нужной даты):

tell application "iCal"
	tell calendar "Birthdays"
		set all_events to every event
		repeat with this_event in all_events
			tell this_event
				delete every sound alarm
				delete every display alarm
				make new display alarm at end with properties {trigger interval:-((1 * days) / (1 * minutes))}
			end tell
		end repeat
	end tell
end tell

Есть одна проблема – скрипт нужно запускать самому после добавления дня рождения в контакты. Это можно было бы сделать через LaunchDaemons, StartupItems или cron, но мне внезапно стало лень это делать, и я воспользовался программой Yabi, которую рекомендовали в комментариях к используемой мною статье.

Yabi устанавливаеися в виде Preference Pane, следит за обновлениями контактов и вносит данные в календарь. Всё, что заявлено, она делает – для пробы я добавил ДР через MobileMe, данные подхватились на ноутбуке и в течение нескольких минут появилось новое событие в календаре. Само собой для внесения данных компьютер должен работать, когда он выключен, события автоматически не внесутся.

Покажу скриншоты. Можно указать календарь, в который помещаются события:

Можно настроить заголовки для сообщений, поддерживаются дни рождения и годовщины:

По умолчанию создаётся три нотификации. Поддерживается отображение сообщения, отправка почты и запуск скриптов.

При возникновении проблем или изменении календаря можно провести пересинхронизацию:

Надеюсь, что теперь забытых дней рождений не будет :-)

Немного рекламы. Что-то не везёт мне на доходы от рекламы (вы заметили, что сейчас сайт чист), попробую разместить постовой (странное слово как на мой взгляд). Никогда с SEO особо не сталкивался, вот сайт киевской компании Идеал, которая этим занимается: ideal.kiev.ua.