Created
June 12, 2022 17:59
-
-
Save justinpenner/e05b7ecc4cbc05263a0e7ec8516b5fd3 to your computer and use it in GitHub Desktop.
Add Google Calendar links to TypeLab 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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