Last active
June 22, 2020 10:03
-
-
Save lordlycastle/70c907f575e38f9e8a717d124c42051a to your computer and use it in GitHub Desktop.
Google App Script that manipulates some events on user's G Calendar.
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
/* | |
01010111 01100001 01110100 01100101 01110010 | |
01111001 01101111 01101111 | |
01100100 01101111 01101001 01101110 00100111 | |
01101000 01100101 01111001 01100001 00111111 | |
00100001 | |
*/ | |
/* | |
Settings | |
*/ | |
let defaultEventTitle = `Blocker: Lightning Talk`; | |
let searchTerm = `Lightning Talk`; | |
let removeAllAlertsSearchTerms = [ | |
`Remote Lunch`, | |
`Review Preparation for presenters` | |
]; | |
let declineEventSearchTerms = [ | |
`Scrum-of-Scrums` | |
]; | |
/* | |
--------------------------------------------------------------------------- | |
Main | |
*/ | |
// Globals | |
let defaultCalendar = CalendarApp.getDefaultCalendar(); | |
let now = new Date(); | |
function main() { | |
Logger.log(`Running on: ` + now); | |
processLightningTalkEvents(); | |
processRemoveAllRemindersSearch(); | |
processDeclineEventsSearch(); | |
} | |
/* | |
----------------------------------------------------------------------------- | |
Processes | |
*/ | |
function processLightningTalkEvents() { | |
let event = getLightningTalkEvent(); | |
if (event) { | |
let title = event.getTitle(); | |
if (title == defaultEventTitle) { | |
removeReminders(event); | |
} else { | |
addReminders(event); | |
} | |
} | |
} | |
function processRemoveAllRemindersSearch() { | |
// Remove reminders | |
removeAllAlertsSearchTerms.forEach((searchTerm, idx) => { | |
let eventsForDay = defaultCalendar.getEventsForDay(now, {search: searchTerm}); | |
Logger.log(`Processing search term: ` + searchTerm + `. Got ` + eventsForDay.length + ` matches.`); | |
if (eventsForDay.length === 0) console.warn(`Did not find match for: ${searchTerm} on date: ${now}.`) | |
eventsForDay.forEach((event, idx) => removeReminders(event)); | |
}); | |
} | |
function processDeclineEventsSearch() { | |
declineEventSearchTerms.forEach((searchTerm, idx) => { | |
let eventsForDay = defaultCalendar.getEventsForDay(now, {search: searchTerm}); | |
Logger.log(`Processing search term: ` + searchTerm + `. Got ` + eventsForDay.length + ` matches.`); | |
if (eventsForDay.length === 0) console.warn(`Did not find match for: ${searchTerm} on date: ${now}.`) | |
eventsForDay.forEach((event, idx) => declineEvent(event)); | |
}); | |
} | |
/* | |
--------------------------------------------------------------------------- | |
Utility | |
*/ | |
function getLightningTalkEvent() { | |
// Finds the event blocker lightning talk event. | |
let eventsForDay = defaultCalendar.getEventsForDay(now, {search: searchTerm}); | |
if (eventsForDay.length == 0) { | |
console.warn(`Did not find any events matching search: ` + searchTerm | |
+ ` for date: ` + now); | |
} else if (eventsForDay.length == 1) { | |
Logger.log(`Found a single event matching search: ` + searchTerm + ` with title: ` + eventsForDay[0].getTitle()); | |
return eventsForDay[0]; | |
} else { | |
console.warn(`Found unexpected number of events matching search: ` + searchTerm | |
+ `. Count: ` + eventsForDay.length | |
+ eventsForDay.map((e, idx) => idx + ` -: ` + e.getTitle()).join('\n')); | |
} | |
} | |
function removeReminders(event) { | |
// Remove all reminder from given event. | |
Logger.log(`Removing all reminder from event: ` + event.getTitle() + `, ID: ` + event.getId()); | |
event.removeAllReminders(); | |
} | |
function addReminders(event) { | |
// Adds default reminders to the given event. | |
Logger.log(`Resetting reminder for event: ` + event.getTitle() + `, ID: ` + event.getId()); | |
event.resetRemindersToDefault(); | |
} | |
function declineEvent(event) { | |
// Declines the given event. | |
Logger.log(`Setting my status for event ${eventToStr(event)} to: ${CalendarApp.GuestStatus.NO}`); | |
event.setMyStatus(CalendarApp.GuestStatus.NO); | |
} | |
function eventToStr(event) { | |
return `event: ${event.getTitle()}, ID: ${event.getId()}`; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment