Skip to content

Instantly share code, notes, and snippets.

@douglascayers
Last active July 13, 2023 21:59
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save douglascayers/ada5a2a1708099f6ed7e to your computer and use it in GitHub Desktop.
Save douglascayers/ada5a2a1708099f6ed7e to your computer and use it in GitHub Desktop.
Create .ics Calendar Event in Visualforce
<!--
Simple proof-of-concept to create a .ics calendar event with visualforce.
Inspired by Natalie Regier @gnatrae
This example uses url parameters to set the details of event.
You could create a custom button that invokes this page, like:
https://<your-salesforce-domain>/apex/vCalendarPage?start={!TEXT(Obj.StartDate__c)}&end={!TEXT(Obj.EndDate__c)}&subject=Event from Visualforce&description=This .ics event created with visualforce&location=The Cloud
An example with literal values you can copy & paste in your browser:
https://<your-salesforce-domain>/apex/vCalendarPage?start=20140524T140000&end=20140524T153000&subject=Event from Visualforce&description=This .ics event created with visualforce&location=The Cloud
-->
<apex:page title="event.ics" contentType="text/calendar" cache="false">
BEGIN:VCALENDAR
VERSION:2.0
PRODID::-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTAMP;TZID=GMT:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.start,':',''),'-',''),' ','T')}"/>
UID:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.start,':',''),'-',''),' ','')}"/>-1@salesforce.com
DTSTART;TZID=GMT:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.start,':',''),'-',''),' ','T')}"/>
DTEND;TZID=GMT:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.end,':',''),'-',''),' ','T')}"/>
SUMMARY:<apex:outputText value="{!$CurrentPage.parameters.subject}"/>
DESCRIPTION:<apex:outputText value="{!$CurrentPage.parameters.description}"/>
LOCATION:<apex:outputText value="{!$CurrentPage.parameters.location}"/>
END:VEVENT
END:VCALENDAR
</apex:page>
@ajhare
Copy link

ajhare commented Jun 21, 2019

Thank you for the above!
I am also experiencing the same issue as new84js, in regards to the body of the event(description) is being dropped. I've tried tweaking it and was able to get the body to show the expected values but the formatting was dropped. It displays in html and I can't seem to get passed that.
If you or anyone has any thoughts or tips I'd appreciate it!

Thanks

@douglascayers
Copy link
Author

Check out my new blog post for a solution that does not require Visualforce or attachments, https://douglascayers.com/2019/06/22/how-to-send-google-and-outlook-calendar-invite-links-in-email-templates/

@johndturn
Copy link

@douglascayers Following up on this, it appears that the link that you posted above is broken. Do you happen to have that article somewhere? I'm very interested in learning how you did it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment