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>
@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