Synchronization of SPBU Timetable with Google calendar.
Начало работы:
Подготовка среды для скрипта.
- Папку на диске для сохранения и конвертирования в ней табличек с раписанием с сайта вуза.
- Создать новый проект в Google Apps Scripts
- Создать и подключить к нему гугл календарь (лучше всего пустой, так как скрипт может стереть что-то нужное)
- Скопировать код из файла Код.gs
- Перейти к следующему этапу.
Настройка скрипта.
Необходимо поменять переменные в Global var Section.
- Указать папку для скачивания excel таблиц с timetable
- Указать id гугл календаря, в который перенесётся расписание. (Лучше всего создать чистый календарь, чтобы расписание можно было скрывать и оно не смешивалось с другими событиями основного календаря)
- Указать ссылку на скачивание таблицы своей группы, она идентична той, которая в образце, главное вырезать из неё всё лишнее, по идее она получится почти такая же, за исключением studentGroupId.
- Далее можно настроить триггеры для автоматического запуска скрипта, либо обновлять его вручную.
В принципе с этого момента уже должно всё работать. Но это говнокод довольно сомнительного качества, который можно и даже нужно доработать, так как встречаются мелкие баги, полохая оптимизация.
Чтобы облегчить чтение этого высера, держите краткое описание сего говнокодинга:
-
Сперва смотрим дату для того, чтобы понять в какой части учебного года находится начало выполнения скрипта, маленькая оптимизация, чтобы получать и обновлять расписание с какой-то даты по конец текущего семестра.
-
Скачиваем с сайта таблички
-
Конверитуем их в гугл таблички
-
Считываем данные, создаём для каждого занятия событие в календаре и заполняем.
Кароч, тут всё самое важное закомментировано, читайте говнокод перед запуском. Самое главное, чтобы у вас была папка и календарь и их id были тут, потому что если вы запустите это с моими id то есть вероятность сломать всё мне, хотя восстановить будет нетрудно, да и защита от долбоёба там по идее какая-то есть.
Функция конвертации всегда конвертирует все xlsx в вашей папке в gsheet затем удаляет все xlsx. Будьте внимательны, если нужны xlsx,то закомментируйте там одну строку и xlsx останутся вместе с gsheet. Функции main_script(), GetDataFromSPBUTimetable(), UploadDataToCalendar(), convert(), writeFile(), SetCalendar() можно менять под свои задачи путём комментирования и декомментирования каких-то строк, обращайте внимания на подписи. Функции writeFile(), SetCalendar(), convert() можно сильно оптимизировать, если есть желание.
Удачи в разборе этого говнокода :)