Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save justinpenner/e05b7ecc4cbc05263a0e7ec8516b5fd3 to your computer and use it in GitHub Desktop.
Save justinpenner/e05b7ecc4cbc05263a0e7ec8516b5fd3 to your computer and use it in GitHub Desktop.
Add Google Calendar links to TypeLab 2022
/*
Add Google Calendar links to TypeLab 2022
To use:
1️⃣ Visit https://2022.typographics.com/typelab/ in your desktop web browser
2️⃣ (Chrome) View > Developer > JavaScript Console
2️⃣ (Firefox) Tools > Browser Tools > Browser Console
2️⃣ (Safari) Develop > Show JavaScript Console
3️⃣ Copy the code below and paste into the console
✅ "Add to Calendar" link appears below the time of each event!
License: MIT
Author: Justin Penner
*/
let events = document.querySelectorAll('tr.event');
events.forEach(event => {
let st = new Date(event.querySelector('time.starttime').dateTime);
let startTime = `${st.getFullYear()}${String(st.getMonth()+1).padStart(2,'0')}${String(st.getDate()).padStart(2,'0')}T${String(st.getHours()).padStart(2,'0')}${String(st.getMinutes()).padStart(2,'0')}${String(st.getSeconds()).padStart(2,'0')}Z`;
if (st.getTimezoneOffset() >= 0) {
startTime += `+${String(st.getTimezoneOffset()/60).padStart(2,'0')}00`;
} else {
startTime += `-${String(st.getTimezoneOffset()/60).padStart(2,'0')}00`;
}
let et = new Date(event.querySelector('time.endtime').dateTime);
let endTime = `${et.getFullYear()}${String(et.getMonth()+1).padStart(2,'0')}${String(et.getDate()).padStart(2,'0')}T${String(et.getHours()).padStart(2,'0')}${String(et.getMinutes()).padStart(2,'0')}${String(et.getSeconds()).padStart(2,'0')}Z`;
if (et.getTimezoneOffset() >= 0) {
endTime += `+${String(et.getTimezoneOffset()/60).padStart(2,'0')}00`;
} else {
endTime += `-${String(et.getTimezoneOffset()/60).padStart(2,'0')}00`;
}
let name = event.querySelector('h5.event-header').innerText;
let desc = event.querySelector('div.talk-description').innerText;
let calLink = document.createElement('a');
calLink.target = '_blank';
calLink.href = `https://calendar.google.com/calendar/render?action=TEMPLATE&dates=${startTime}%2F${endTime}&details=${encodeURIComponent(desc)}&location=&text=${encodeURIComponent(name)}`;
calLink.innerText = 'Add to Calendar';
event.querySelector('td.event-time').appendChild(calLink);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment