Как перенести все записи из выбранного гугл календаря в таблицу менее чем за минуту при помощи скрипта

—

от автора

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

Однако, если скопировать все записи из календаря в гугл таблицу, то их можно легко отформатировать и даже провести аналитику, если это надо. А данные календаря останутся неизменными.

Самый простой способ перенести все записи из выбранного гугл календаря в таблицу — воспользоваться Google Apps Script.

TL;DR
// https://habr.com/ru/articles/811171/  function eventstospreadsheet() {     //var cal = CalendarApp.getDefaultCalendar()     var cal = CalendarApp.getCalendarById('XXXXXXXX@group.calendar.google.com')     var sheet = SpreadsheetApp.getActiveSheet()     var values = [         ["№ п/п", "Дата", "Имя", "Адрес", "Описание"]     ]      var events = cal.getEvents(new Date("1 January 1998"), new Date())      for (var i = 0; i < events.length; i++) {         values.push([i + 1, events[i].getStartTime(), events[i].getTitle(), events[i].getLocation(), events[i].getDescription()]) //.substring(0, 500)     }      Logger.log( JSON.stringify(values) )      sheet.getRange("A1:E" + values.length).setValues(values) }

1. Определяем идентификатор нужного календаря

Сначала надо найти идентификатор нужного календаря, потому что их может быть несколько — для этого создаём пустую гугл таблицу и вставляем в неё код скрипта Google Apps Script:

  1. Откройте Google Диск. Перейдите на Google Диск и войдите в свою учетную запись Google.

  2. Создайте новую таблицу. Нажмите кнопку «+ Новый» в верхнем левом углу. В раскрывающемся меню выберите «Google Таблицы».

  3. Откройте редактор сценариев:
    – Открыв новую таблицу, перейдите в меню «Расширения».
    – В раскрывающемся списке выберите «Apps Script».

  4. Вставьте сценарий определения идентификатора нужного календаря:

// https://habr.com/ru/articles/811171/  function getCalendars() { //получить список идентификаторов всех доступных календарей     var calendars = CalendarApp.getAllCalendars();     Logger.log('Этот пользователь подписан на %s календарей:', calendars.length);     for (var i = 0; i < calendars.length; i++) {         var calendar = calendars[i];         Logger.log((i + 1) + 'й календарь: "' + calendar.getName() + '",\n ID: "' + calendar.getId() + '"\n');     } }

После этого сохраните скрипт и авторизуйте его — нажмите «Разрешить» после запуска функции getCalendars, для того, чтобы начать использовать скрипт.

Вы в любое время можете посмотреть список выданных вами разрешений на специальной странице и в один клик их отозвать.

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

Поиск идентификатора календаря

Поиск идентификатора календаря

Идентификатор нужного календаря выглядит примерно вот так (на скриншоте не показан):
dnsk4qaa0bt4zax029hyogwj78ft@group.calendar.google.com

2. Вставляем скрипт копирования всех записей календаря в код гугл таблицы

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

Идентификатор указанный в коде XXXXXXXX@group.calendar.google.com, необходимо заменить на ваш собственный, найденный на предыдущем шаге. И дату 1 January 1998 можно заменить на любую другую дату начала поиска событий в календаре.

// https://habr.com/ru/articles/811171/  function eventstospreadsheet() {     //var cal = CalendarApp.getDefaultCalendar()     var cal = CalendarApp.getCalendarById('XXXXXXXX@group.calendar.google.com')     var sheet = SpreadsheetApp.getActiveSheet()     var values = [         ["№ п/п", "Дата", "Имя", "Адрес", "Описание"]     ]      var events = cal.getEvents(new Date("1 January 1998"), new Date())      for (var i = 0; i < events.length; i++) {         values.push([i + 1, events[i].getStartTime(), events[i].getTitle(), events[i].getLocation(), events[i].getDescription()]) //.substring(0, 500)     }      Logger.log( JSON.stringify(values) )      sheet.getRange("A1:E" + values.length).setValues(values) }

Выполнение кода не изменяет календарь — не удаляет и не изменяет записи, а просто последовательно считывает информацию об каждой из записей.

3. Переносим все записи из выбранного гугл календаря в гугл таблицу менее чем за минуту

Функцию eventstospreadsheet теперь можно запустить вручную из редактора скриптов. Для этого:

  1. Откройте Google Таблицу.

  2. Нажмите «Расширения» в строке меню.

  3. В раскрывающемся меню выберите «Apps Script». Откроется редактор сценариев.

  4. В редакторе скриптов выберите функцию eventstospreadsheet , которую надо запустить, из раскрывающегося списка рядом с кнопкой воспроизведения (▶️).

  5. Нажмите кнопку воспроизведения (▶️), чтобы запустить выбранную функцию.

Результат считывания данных из календаря и создания копии в гугл таблице

Результат считывания данных из календаря и создания копии в гугл таблице

Итоги

В статье представлен код Google Apps Script, который использует сервисы Google Календаря и Google Таблиц для экспорта событий из календаря в таблицу. С помощью кода можно перенести все записи из выбранного гугл календаря в таблицу менее чем за минуту, а затем отформатировать удобным для себя образом или провести аналитику.

Автор: Михаил Шардин,

30 апреля 2024 г.

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

Используете гугл скрипты в работе?

33.33% Да5
40% Нет6
26.67% Что такое гугл скрипт?4

Проголосовали 15 пользователей. Воздержались 2 пользователя.

ссылка на оригинал статьи https://habr.com/ru/articles/811171/


Комментарии

Добавить комментарий

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