Гуглоскрипт, который берёт моё расписания из РУЗа в гуглокалендарь, что позволяет:
- заранее понимать какие пары я пропущу
- получать своевременные напоминания
- видеть нужную аудиторию прямо на стандартном виджете часов
Для этого нужно перейти на ruz.hse.ru и в консольке браузера ввести следующее:
await fetch('https://ruz.hse.ru/api/search?type=student&term=' + prompt("Имя:")).then(x => x.json()).then(x => alert(x.map(x => `[${x.id}] ${x.label} (${x.description})`).join('\n')));
Появится окошко, в котором можно будет обменять свои ФИО на айдишник. В моём случае это 325099
.
- Перейти по ссылочке: https://calendar.google.com/calendar/u/0/r/settings/createcalendar
- Создать календарь с названием
ruz
(именно так!)
Будьте осторожны, скрипт уничтожает все события из календаря, с которым работает.
Лучше, если у вас не будет других нужных календарей с названием ruz
.
- Перейти сюда: https://script.google.com/home/projects/create
- Скопипастить весь код
- Поправить в первой строчке айдишник на полученный в шаге 1.
- Жахнуть тестовый прогон кнопкой «выполнить», выдать права, запустить ещё раз. Убедиться, что события медленно начали появляться в календаре.
- Перейти в раздел «Триггеры» слева и настроить запуск
syncAll
каждые сутки (см. картинку)
Есть вероятность, что скрипт упрется в лимит по времени исполнения, тогда имеет смысл разбить запуск на несколько поменьше.
В скрипте:
function sync1() { sync(addWeeks(-1), addWeeks(0)); }
function sync2() { sync(addWeeks(0), addWeeks(1)); }
function sync3() { sync(addWeeks(1), addWeeks(2)); }
function sync4() { sync(addWeeks(2), addWeeks(3)); }
В триггерах:
У меня они ещё и по времени разнесены с 00:00 до 4:59.
Календарь умеет показывать положение мероприятия на карте и даже предупреждать заранее, что пора бы выехать, чтобы успеть вовремя. Для этого нужно заменить
const location = `${room}, ${building}`
на
const location = `${building}, ${room}`
Однако тогда на виджете часов влезает только название «Покровский б-р, 11, …», что в целом и так ясно. А вот аудитория мне важнее.
Возможно, кому-то проще указать почту, чем ФИ(О) для получения id. Вот такой вариант: