Перейти к основному содержанию

Google Calendar — ускоряем календарь из Exchange

Google

Не так давно я писал статью о том, как добавить календарь Exchange в календарь Google.

Google Calendar — добавляем календарь из Exchange

Если вкратце, то там задача разбивается на два этапа:

  1. Открыть общий доступ к календарю Outlook в формате iCalendar (ICS).
  2. Добавить календарь в формате iCalendar (ICS) в Google.

И всё работает, но есть одно большое НО. События обновляются раз в сутки, поэтому использовать такой календарь для "горячих" встреч не получится. Можно что-нибудь пропустить. Новое событие в календаре Exchange может появиться только через 24 часа.

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

Как сделать так, чтобы было бесплатно и быстро? - спросите вы меня. Легко! - отвечу я. Будем программировать в Google Apps Script. Ну как, программировать. Всё уже запрограммировано за нас, воспользуемся GAS-ICS-Sync:

https://github.com/derekantrican/GAS-ICS-Sync

GAS-ICS-Sync можно расшифровать так: Google Applications Script for Internet Calendaring and Scheduling Syncronisation. Что в переводе на кириллический означает: Не Дам Денег Гуглу За Синхронизацию Календаря или попросту НеДаДеГуЗаСиК.

Из этого чудо-проекта мы скачиваем 5 файлов:

  • Code.gs
  • Helpers.gs
  • ical.js.gs
  • tzid.gs
  • appsscript.json

Переходим к скриптам Google:

https://script.google.com/

Можно также в Google Диске Создать → Ещё → Google Apps Script.

google

Указываем название проекта, например, GAS-ICS-Sync.

Добавляем файлы в новый проект. Файлы Code.gs, Helpers.gs, ical.js.gs, tzid.gs добавляем через + Скрипт в редакторе. После чего указываем название файла и копируем соответствующее содержимое в поле справа для каждого файла.

google

Переходим в настройки проекта и включаем галку "Показывать файл манифеста appsscript.json в редакторе".

google

Возвращаемся в редактор, там добавился файл appsscript.json, вставляем в него содержимое из скачанного файла.

Добавляем сервисы через Сервисы +.

google

Добавляем Google Calendar API. Идентификатор не меняем!

google

Добавляем Tasks API. Идентификатор не меняем!

google

Переходим в редакторе на файл Code.gs, редактируем раздел настроек.

/*
*=========================================
*               SETTINGS
*=========================================
*/

var sourceCalendars = [                // The ics/ical urls that you want to get events from along with their target calendars (list a new row for each mapping of ICS url to Google Calendar)
                                       // For instance: ["https://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics", "US Holidays"]
//  ["icsUrl1", "targetCalendar1"],
//  ["icsUrl2", "targetCalendar2"],
  ["https://ссылка_на_мой_календарь.ics", "Evo календарь"]
  
];

var howFrequent = 10;                  // What interval (minutes) to run this script on to check for new events
var onlyFutureEvents = false;          // If you turn this to "true", past events will not be synced (this will also removed past events from the target calendar if removeEventsFromCalendar is true)
var addEventsToCalendar = true;        // If you turn this to "false", you can check the log (View > Logs) to make sure your events are being read correctly before turning this on
var modifyExistingEvents = true;       // If you turn this to "false", any event in the feed that was modified after being added to the calendar will not update
var removeEventsFromCalendar = true;   // If you turn this to "true", any event created by the script that is not found in the feed will be removed.
var addAlerts = true;                  // Whether to add the ics/ical alerts as notifications on the Google Calendar events, this will override the standard reminders specified by the target calendar.
var addOrganizerToTitle = false;       // Whether to prefix the event name with the event organiser for further clarity
var descriptionAsTitles = false;       // Whether to use the ics/ical descriptions as titles (true) or to use the normal titles as titles (false)
var addCalToTitle = false;             // Whether to add the source calendar to title
var addAttendees = false;              // Whether to add the attendee list. If true, duplicate events will be automatically added to the attendees' calendar.
var defaultAllDayReminder = -1;        // Default reminder for all day events in minutes before the day of the event (-1 = no reminder, the value has to be between 0 and 40320)
                                       // See https://github.com/derekantrican/GAS-ICS-Sync/issues/75 for why this is neccessary.
var overrideVisibility = "";           // Changes the visibility of the event ("default", "public", "private", "confidential"). Anything else will revert to the class value of the ICAL event.
var addTasks = false;

var emailSummary = false;              // Will email you when an event is added/modified/removed to your calendar
var email = "";                        // OPTIONAL: If "emailSummary" is set to true or you want to receive update notifications, you will need to provide your email address

Указываем здесь ссылки на свои календари и их названия. Указываем настройки синхронизации, у меня настроено на один раз в 10 минут.

Выбираем install и нажимаем Выполнить.

google

Попросят авторизоваться. Инструкцию по шагам авторизации можно посмотреть здесь:

https://youtu.be/_5k10maGtek?t=1m22s

Теперь каждые 10 минут будет запускаться скрипт синхронизации календарей. Если нужно только один раз синхронизировать календари, то вместо install можно выполнить startSync. Uninstal, соответственно, остановит синхронизацию и удалит импортированные календари.

google

Новые календари появятся в разделе "Мои календари". У меня скрипт уже работает год без нареканий.

Ссылки

https://github.com/derekantrican/GAS-ICS-Sync/wiki/Setting-up-the-script-manually

https://github.com/derekantrican/GAS-ICS-Sync

Теги

 

Похожие материалы

Google Calendar — добавляем календарь из Exchange

Сегодня добавим календарь Exchange в календарь Google. К примеру, мы можем подключить рабочий календарь из Exchange к личному календарю Google, чтобы на смартфоне отслеживать события и встречи.

PHPWebAdmin — веб-админка для hMailServer

Почтовый сервер hMailServer поставляется вместе с веб-интерфейсом для администрирования. Можно подключить его к Apache или IIS и администрировать почтовый сервер удалённо через Интернет.

Теги

Открыть Google Chrome на двух мониторах

Сисадминам часто приходится настраивать различные системы мониторинга. Сегодня будем автоматизировать открытие браузера Google Chrome на двух мониторах. Открывать будем в режиме киоска на полный экран.

Теги