Ever wanted to have your fitness workouts displayed upon your calendar so that you can track how many you’ve achieved during the week/month?
Sounds like a simple task doesn’t it. Oh, how wrong we are… Let’s see what can be achieved from some of the more popular services.
My personal preference as this is what I’m currently using.
MapMyRun offers a Sync Calendar (Google, Outlook, Yahoo and More) option from there Dashboard -> View Calendar page. This will only sync future workouts to an ICS file that you can subscribe to from Google Calendar or Outlook or what have you.
Issue # 1 – I want the calendar entries to end up in an existing calendar
After subscribing to the calendar within Google Calendar, I found a IFTTT Recipe that is supposed to copy all new entries from calendar to another. The issue with this is that an Internet based calendar that you subscribe to within Google Calendar does not have a Private Calendar Address (You cannot re-Share this calendar.. So you cannot obtain the XML URL that is needed for the aforementioned IFTTT Recipe). Further searching resulted in finding Copy Calendar Events, a paid App on the Google Android Play Store. This appears to be able to accomplish the task of copying the events automatically on a schedule as it works with the calendars being downloaded to your Android device. Prior to purchasing it however I discovered Issue # 2 which had to be resolved first.
Issue # 2 – Time entries within the supplied ICS file
After the events appeared within my Google Calendar, I noticed that they were all at midnight and lasted for 24 hours each. After checking this within MS Outlook and downloading the ICS file and viewing within Notepad the following was discovered:
- The ICS file that is generated by MapMyRun does not include a Timezone field. This is a ‘known issue’ that is allegedly being worked on by MapMyRun developers.
- All events were being generated with the same DTSTART and DTEND time (just different dates for different entries as expected)
- Outlook sets the Calendar Timezone to GMT+0 as well, but displays the events as 8 hours later than the values within the ICS file to account for the GMT offset (+8) that Perth, Australia is
- This being 10am GMT (Resulting in 6pm in MS Outlook for me)
- Google Calendar sets the Calendar time zone to (GMT+00:00)
- Maybe an incorrect interpretation by Google Calendar of the DTSTART and DTEND date/time being the same it assumes an all-day event instead of an event of 0 minutes.
I contacted MapMyRun Support who initially blamed the lack of time zone support, who after pointing out that the DTSTART and DTEND times were being set to the same arbitrary value of 10am GMT then asked what browser am I using and what error message am I getting….. Clearly this line of questioning was going nowhere fast. I would probably need to talk to a senior support person or a developer to resolve this issue….
Following that, I decided to look at other Fitness tracking services and their output / calendar synchronisation options.
Another leading fitness tracking app, RunKeeper, has been around for a while.
Found on IFTTT two Recipes this one which I initially tried using and subsequently this one. They both use the RunKeeper app Personal Activity Feed which stores a copy of your activity data after authorising it to do so. The first one mentions the use of a 3rd party service Feed43 to convert the activity feed into an RSS feed. It appears that this is now not required as v2 of the Personal Activity Feed now output’s a compliant RSS feed. The Quick Add Text within the first links Recipe is also not quite correct. Using the second IFTTT Recipe results in a better Calendar entry being created.
Of note is that there is a delay between completing a workout and the activity data transferring to the Personal Activity Feed and finally via IFTTT to your Google Calendar.
There are two issues with this solution:
Issue 1 # – The activity name contains extra characters
This is a minor issue, in that the date / time is formatted as “2014-07-19 21:02:45″and Google Calendar doesn’t interpret the seconds field properly which results in the Calendar event being titled “Event Title 45”. There is no way through Google Calendar or IFTTT that I can find to alter the format of the time to exclude the seconds information.
You can further complicate the solution, but remove the extra characters by parsing the Personal Activity Feed RSS feed through Yahoo Pipes as shown below.
Issue # 2 – Calendar events are created with 30 minute duration by default
This can be altered within the Quick Add Text section in IFTTT so that it creates an event of 0 minutes (“just append “for 0 minutes” after the time). 30 minutes, 0 minutes or however long you are normally active for, the choice is yours.
I found this IFTTT Recipe which uses a 3rd party service Endo2Atom to scrape the publicly viewable (and so embeddable into your site) listing of your recent workouts / activities. For example: http://www.endomondo.com/embed/user/workouts?id=123456
This solution has several issues that preclude it from actually delivering what the IFTTT Recipe promises:
- There is no starting time provided, just the date
- The Endomondo activity listing updates from the moment you start your activity, which means that if IFTTT polls the feed during a workout it will add a partial entry to your Calendar
There appears to be no way to have your Endomondo workouts synchronised to your Calendar.
The best option out of the three services provided above is RunKeeper which whilst not perfect, provides the best solution when using this IFTTT Recipe and the Yahoo Pipes parsing mentioned above.