Экспорт дней рождения из Вконтакта в Google Calendar

"DR Buganov Aleksandr  28.03.1989 http://vk.com/id12345678 — Каждый год 28 март" — смс такого вида приходят мне накануне дня рождения моих друзей, и я не забываю поздравить их на следующий день.

Я думаю, многие здесь, как и я, имеют аккаунт в популярной социальной сети Вконтакте. У него есть свои плюсы и минусы. Одним из плюсов Вконтакта — это возможность не забыть про день рождения друзей. Но оповещения об этом событии приходит только на почту, но почту иногда не удается проверять каждый день, от чего поздравлять приходится уже после знаменательной даты.  И чтобы не пропускать день рождения друзей я стал использовать Google Calendar. К нему можно привязать номер телефона и сообщения будут приходить на телефон по расписанию. Но руками вводить напоминания оказалось муторным делом. Я установил напоминания только на самых близких друзей. Но какже все остальные? 

Чтобы сделать напоминания для всех остальных, была написана эта обработка. Она работает на API указанных выше сервисов.

Принцип работы состоит в следующем: мы авторизовываемся в Google и получаем доступ к каледарю, затем авторизовываемся в Вконтакте и получаем список друзей с датами рождения (не у всех естественно эта дата заполнена, но мы сможем вручную указать ее в дальнейшем). Устанавливаем настройки и отмечаем друзей, напоминание для которых мы хотим установить. И создаем эти напоминания.

 

Внизу обработки на закладке Настройки можно задать настройки уведомления

Флажок «Использовать настройки оповещения по-умолчанию» позволяет использовать настройки календаря сохраненые по-умолчанию в самом календаре. При изменении этих настроек, они будут применены ко всем напоминаниям. А если мы в обработке задаем методы оповещения, то изменить их можно будет, но только заходя в каждое напоминание.

Поле Time zone — указывает часовой пояс, по которому будут приходить оповещения. (По-умолчанию часовой пояс установлен Московский). В список выбора я добавил не все часовые пояса, т.к. если чегото не хватает пишите в комментарии, добавлю.

В поле Повторяется указан только один вариант, остальные я не обрабатывал, они не нужны были мне.

Все, после того как мы авторизовались и указали нужные нам настройки. Переходим на вкладку Основное. 


Список календарей заполнился при авторизации в Google, а список друзей из Вконтакта, при авторизации в Вконтакте.

После того как мы отметили друзей (отметить можно только, тех у которых заполнена дата и месяц рождения), для которых мы хотим установить напоминания, нажимаем кнопку Создать напоминания в календаре. Как только напоминания будут созданы они отображатся в списке событий. При нажати еще раз этой кнопки, все напоминания создадутся повторно!

Название событий создаются в транслите.  Почемуто API Google не обрабатывает русские символы.

Внимание! Если у вас не подключен номер телефона к календарю и при установки метода sms оповещения — этот метод не будет действовать. Подключить номер телефона к Google календарю вы можете на этой странице

 

Обработка показана как пример для работы с Google календарем. В анонсе ссылка указана для примера неверная.

9 Comments

  1. kare

    + за идею

    Reply
  2. Terve!R

    Интересно… А ведь можно пойти дальше и создавать задачи в гугле с халявным уведомлением по смс… 🙂

    Reply
  3. the1

    (2) Terve!R, идея!

    Reply
  4. pepe

    (2) Terve!R, Идея очень хорошая! Не всегда приходят СМС. Я использовал механизм СМС для проведения по партиям.

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

    Reply
  5. bashinsky
    Важное уведомление об SMS-оповещениях Google Календаря

    С 27 июня 2015 года будет прекращена рассылка SMS-оповещений Google Календаря. Эта функция была представлена до появления смартфонов. Теперь, когда они получили широкое распространение, для отправки оповещений на мобильные устройства используются более многофункциональные и надежные технологии, которые позволяют получать их даже без подключения к Интернету.

    Чтобы получать оповещения на смартфон, либо настройте соответствующим образом установленное по умолчанию приложение «Календарь», либо установите приложение «Google Календарь» для устройств Android или iPhone. Подробную информацию о том, как задать настройки по умолчанию для оповещений, можно найти в Справочном центре.

    Обратите внимание, что это изменение не затронет клиентов, использующих Google Drive for Work, Google Apps for Work (платная версия), Google Apps for Education и Google Apps for Government.

    Команда Google Календаря

    Так что СМСки будут приходить до 27 июня.

    Reply
  6. FarFar

    Насчет кириллицы: поразбирался сегодня, помог совет из http://www.forum.mista.ru/topic.php?id=708415

    цитирую:

    http://api.yandex.ru/direct/doc/concepts/JSON.xml

    просто когда 1с генерит файл в кодировке utf-8, она в начало файла ВОМ символы записывает, из-за чего сервер считает, что json в неверном формате.

    Можно так файл в кодировке utf-8 без BOM записать

    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
    ЗаписьТекста.Закрыть();
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,, Истина, Символы.ПС);
    

    поэтому в начале функции СоздатьНапоминанияДняРожденияНаСервере вместо

    ФайлJSON = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.ANSI, Символы.ПС, Ложь);

    написал

    ФайлJSON = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.ANSI);//, Символы.ПС, Ложь

    ФайлJSON.Закрыть();

    ФайлJSON = Новый ЗаписьТекста(ИмяВременногоФайла,,, Истина, Символы.ПС);

    и все заработало, прекрасно отправляются и русские, и английские символы в google

    Reply
  7. FarFar

    И, конечно, в строке Текст.Вставить(«summary», Транслит(Строка.НаименованиеСобытия));

    Убрать вызов функции Транслит, просто Текст.Вставить(«summary», СокрЛП(Строка.НаименованиеСобытия));

    Можно добавить еще Текст.Вставить(«description», СокрЛП(Строка.НаименованиеСобытия)); — чтобы писалось что то также в тело события.

    Reply
  8. FarFar

    Раз уж зашел в эту тему: может кто поможет мне с подзадачкой? (прошу извинения хозяина ветки)

    Есть задачка связать 1С УТ 11 и google календарь. Например, ставится задача кому-то в 1С — и она попадает ему в google календарь (возможно, с подтверждением запроса).

    Получается создать мероприятие, получается добавить получателя в список attendees (Гости).

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

    Здесь http://yapro.ru/web-master/programs/google-calendar-api-events-perevod.html нашел метод move, который «Перемещает событие в другой календарь, т.е. изменяет организатора событий»

    Не могу понять, как этот move вызвать в коде 1С. Кто-нибудь решал такую задачу?

    Reply
  9. jmi

    (8)

     ЗапросHTTP = Новый HTTPЗапрос;
    ЗапросHTTP.Заголовки = Заголовки;
    ЗапросHTTP.УстановитьИмяФайлаТела(ИмяФайлаОтправки);
    Если ЗначениеЗаполнено(Строка.GoogleEventID) Тогда //когда нужно изменить событие как в вашем случае movе
    ЗапросHTTP.АдресРесурса = «/calendar/v3/calendars/» + КалендарьGoogle.id + «/events/»+Строка.GoogleEventID+»?access_token=» + AccessTokenGApi;
    ОтветHTTP = Соединение.ВызватьHTTPМетод(«PUT», ЗапросHTTP);
    Иначе
    ЗапросHTTP.АдресРесурса = «/calendar/v3/calendars/» + КалендарьGoogle.id + «/events?access_token=» + AccessTokenGApi;
    ОтветHTTP = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
    КонецЕсли;
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *