Skip to content

Instantly share code, notes, and snippets.

@llamafilm
Created December 18, 2023 05:47
Show Gist options
  • Save llamafilm/7a607141333ccde13b6a319b9a5ab65f to your computer and use it in GitHub Desktop.
Save llamafilm/7a607141333ccde13b6a319b9a5ab65f to your computer and use it in GitHub Desktop.
Create google calendar event for sunset appreciation each day
/**
* Creates an event in the user's default calendar.
* @see https://developers.google.com/calendar/api/v3/reference/events/insert
*/
function createEvent(start) {
const calendarId = 'primary';
// make end time 15 minutes after start
var m = 15; // minutes
var end = new Date();
end = new Date(end.setTime(start.getTime() + (m*60*1000)));
console.log('start:', start, 'end:', end)
// event details for creating event.
let event = {
summary: 'Sunset Appreciation',
//location: '',
//description: '',
start: { dateTime: start.toISOString() },
end: { dateTime: end.toISOString() },
attendees: [
// {email: 'myself'},
],
// yellow background. Use Calendar.Colors.get() for the full list.
colorId: 5
};
try {
// call method to insert/create new event in provided calandar
event = Calendar.Events.insert(event, calendarId);
console.log('Event ID: ' + event.id);
} catch (err) {
console.log('Failed with error %s', err.message);
}
}
function main() {
// create daily calendar events at sunset time between this date range
var start = '2023-12-18'
var end = '2023-12-31'
// get sunset times from API (max 1 year)
var response = UrlFetchApp.fetch(`https://api.sunrisesunset.io/json?lat=34.12704556724034&lng=-116.03681613849004&date_start=${start}&date_end=${end}`);
var json = response.getContentText();
var data = JSON.parse(json);
// iterate through each day
data.results.forEach((obj) => {
//console.log(obj);
var sunset = obj.sunset;
// parse string result
var h = parseInt(sunset.split(':')[0]);
var m = sunset.split(':')[1];
var s = sunset.split(':')[2].split(' ')[0];
var ampm = sunset.split(':')[2].split(' ')[1];
// convert AM/PM to 24 hour time
if (ampm == 'PM') { h += 12 };
h = h.toString().padStart(2, '0');
event_start = new Date(`${obj.date}T${h}:${m}:${s}`);
createEvent(event_start);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment