Skip to content

Instantly share code, notes, and snippets.

@beezly
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beezly/84c6300982d9ec0cf53d to your computer and use it in GitHub Desktop.
Save beezly/84c6300982d9ec0cf53d to your computer and use it in GitHub Desktop.
Create Calendar Events when I get parking receipt messages. Depends on receiving an email in the right format from the parking payment provider.
function processParkingMessages() {
// get all unread messages labelled as Parking
var parkingThreads = GmailApp.getUserLabelByName('Parking').getThreads();
var parkingThreadMessages = parkingThreads.map(function(thread) { return thread.getMessages(); });
var parkingMessages = [];
var parkingMessages = parkingMessages.concat.apply(parkingMessages, parkingThreadMessages);
var unreadParkingMessages = parkingMessages.filter(function(message) { return message.isUnread(); });
// Map through all the unread parking messages and search for a date/time in the appropriate format.
unreadParkingMessages.map(function(message) {
// Stop Parking messages are in the following format
// Stop Parking: 2015/02/15 3:04PM
// /Stop\ Parking:\ (\d+)\/(\d+)\/(\d+)\ (\d+):(\d+)([AP]M)/
var body = message.getBody();
var res = body.match(/Stop\ Parking:\ (\d+)\/(\d+)\/(\d+)\ (\d+):(\d+)([AP]M)/);
if (res) {
var year = parseInt(res[1]);
var month = parseInt(res[2]);
var day = parseInt(res[3]);
var hour = parseInt(res[4]);
var minute = parseInt(res[5]);
if (res[6] == 'PM') {
hour+=12;
}
// Curse the person who decided the month was zero-indexed
var startTime = new Date(year, month-1, day, hour, minute);
Logger.log("Creating a Calendar Entry at "+ startTime);
var event = CalendarApp.getDefaultCalendar().createEvent('Parking Expires',startTime,startTime);
event.addPopupReminder(10);
Logger.log('Event ID: ' + event.getId());
Logger.log('Created at: ' + event.getStartTime());
message.markRead();
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment