I am trying to create an .ics file that can be used to import all-day events.
I'm using the following code in the .ics file:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1#example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe#example.com
DTSTART;TSID="GMT":20110719T040000
DTEND;TSID="GMT":20110719T200000
TRANSP:OPAQUE
SUMMARY:Holiday
X-LOTUS-UPDATE-SEQ:1
X-LOTUS-NOTESVERSION:2
X-LOTUS-APPTTYPE:2
END:VEVENT
END:VCALENDAR
I exported a test all-day event, so I could check the formatting, but it still does not display in the top panel as an all-day event.
Does anyone know how to get an event to appear as an all-day event in Lotus Notes?
The correct solution was to remove the time from the DTSTART and DTEND e.g.
DTSTART;TSID="GMT":20110719T040000 ==> DTSTART;TSID="GMT":20110719
Hope this helps some people.
This is a working example:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//innerjoin.org/NONSGML Innerjoin iCal Test Case Gen 20050301//EN
BEGIN:VEVENT
UID:20050301-96412-innerjoin-org
DTSTART;VALUE=DATE:20050301
DTEND;VALUE=DATE:20050302
DTSTAMP:20050301
URL:
http://www.innerjoin.org/iCalendar/test-cases/20050301-20050302.txt
SUMMARY:
Event from 20050301 to 20050302
DESCRIPTION:
Event starting at 20050301 and lasting until 20050302\n
- Option: Starting on 20050301\n
- Option: Ending on 20050302\n
- Default: No timezone specified\, using local time\n
- Default: No status given\, not necessarily confirmed\n
- Default: No class given\, treat event details as publicly accessible\n
- Default: Event treated as opaque
END:VEVENT
END:VCALENDAR
Related
I am using ical4j to send out emails with a calendar attachment. I am able to add an organizer based on this SO post: How should I use iCal4j to add a meeting organizer to an iCal event
event.getProperties().add(new Organizer("mailto:bob#example.com"));
The problem is that no attendees added to the calendar is able to cancel an event. If I create (manually, no ical4j) an calendar appointment in Outlook Online, I am able to cancel an event as shown below:
However, the email with an ical4j attachment I received as the organizer (see the above code example) only gives me three options: Yes, No, Maybe as shown below:
How can I make someone among an meeting's attendees be able to cancel the meeting?
------- Update 11/15 -------
Based on the suggestion from #fortuna, my program generated the following event. I am still unable to cancel an event.
BEGIN:VCALENDAR
PRODID:-//Events Calendar//iCal4j 3.0.1//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20211115T144506Z
DTSTART;TZID=America/New_York:20211215T110000
DTEND;TZID=America/New_York:20211215T114500
SUMMARY:ABC123 School
TZID:America/New_York
LOCATION:Virtual
UID:153ab747-bbd2-4964-9112-9fa0d29ed306
STATUS:CONFIRMED
ORGANIZER;ROLE=CHAIR:mailto:dev1#example.com
ATTENDEE;ROLE=REQ-PARTICIPANT:mailto:dev2#example.com
ATTENDEE;ROLE=REQ-PARTICIPANT:mailto:dev1#gmail.com
END:VEVENT
END:VCALENDAR
I manually generated an event in Outlook Online and forwarded it to my yahoo account to get the calendar attachment:
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN="dev1":mailto:dev1#example.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=dev2
g:mailto:dev2#yahoo.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="dev3"
:mailto:dev3#example.com
DESCRIPTION;LANGUAGE=en-US:\n\n\n________________________________________\n
From: dev1 <dev1#example.com>\nSent: Monday\, November 15\, 2021 8:5
2:23 AM (UTC-05:00) Eastern Time (US & Canada)\nTo: dev3\; dev1\,
\nSubject: test\, please ignore it.\nWhen: Monday\, N
ovember 22\, 2021 10:30 AM-11:00 AM.\nWhere:\n\ntest\n\n__________________
______________________________________________________________\nMicrosoft
Teams meeting\nJoin on your computer or mobile app\nClick here to join the
.....
cdd5fc5d11c&threadId=19_meeting_OGYzZjAdddxMjYtYYy00ZDE4LWE0NjctZjY4OTA0ZG
I0ZTQ4#thread.v2&messageId=0&language=en-US>\n____________________________
____________________________________________________\n
UID:040000008200E00074C5B7101A82E00800000000933C540328DAD701000000000000000
0100000001771BBC5CAD45B499CBF167EE077185B
SUMMARY;LANGUAGE=en-US:FW: another test for GRD\, please ignore it.
DTSTART;TZID=Eastern Standard Time:20211122T103000
DTEND;TZID=Eastern Standard Time:20211122T110000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20211115T135223Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2119924365
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-ONLINEMEETINGINFORMATION:{"OnlineMeetingChannelId":null\,"Onlin
eMeetingProvider":3}
X-MICROSOFT-ONLINEMEETINGTOLLNUMBER:+1 571-429-6038
X-MICROSOFT-ONLINEMEETINGCONFERENCEID:475654328
X-MICROSOFT-SKYPETEAMSMEETINGURL:https://teams.microsoft.com/l/meetup-join/
19%3ameeting_OGYzZjAxMjYtYzFlYy00ZDE4LWE0NjctZjY4OTA0ZGI0ZTQ4%40thread.v2/
0?context=%7b%22Tid%22%3a989b5e2ddda-14e4-4efe-93b7-8cdd5fc5d11c%22%2c%22O
id%22%3a%2256f6a1be-b722-47fd-b69c-5950f281818f%22%7d
X-MICROSOFT-SCHEDULINGSERVICEUPDATEURL:https://api.scheduler.teams.microsof
t.com/teams/989b5e2a-14e4-4efe-9ddd5fsasdfc5d11c/56f6a1be-b722-47fd-b69c-5
950f281818f/19_meeting_OGYzZjddYtYzFl4Ysa00ZDE4LWE0NjctZjY4OTA0ZGI0ZTQ4#th
read.v2/0
X-MICROSOFT-SKYPETEAMSPROPERTIES:{"cid":"19:meeting_OGYzZjAxMjYtYzFlYy00ZDE
4LWE0NjctZjY4OTA0ZGI0ZTQ4#thread.v2"\,"rid":0\,"mid":0\,"uid":null\,"priva
te":true\,"type":0}
X-MICROSOFT-ONLINEMEETINGCONFLINK:conf:sip:dev1#example.com\;gruu\;opaque=app:
conf:focus:id:teams:2:0!19:meeting_OGYzZxAxMjYtdasYzFlYy00Z4LWE0NjctZjY4OTA
0ZGI0ZTQ4-thread.v2!56f6a1beb72247fdb69c5818dasdfsadf!989b5e2a14e44efe93b78
cdd5fc5d11c
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR
I suspect you may need to add something like a participation role to your organizer property:
https://datatracker.ietf.org/doc/html/rfc5545#section-3.2.16
e.g. ORGANIZER;ROLE=CHAIR:bob#example.com
Another way to find out how Outlook does it is to forward the event "as icalendar" to another email address and inspect the ".ics" attachment.
I'm trying to create a program which help me to import programmatically my school event. The output file (calendarXXXXX...ics) looks like this:
BEGIN:VCALENDAR
PRODID:xxx
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART:20171023T140000Z
DTEND:20171023T160000Z
UID:xxx
CREATED:20171017T165457Z
DESCRIPTION:xxx
LOCATION:xxx
STATUS:CONFIRMED
SUMMARY:xxx
END:VEVENT
BEGIN:VEVENT
DTSTART:20171025T090000Z
DTEND:20171025T130000Z
UID:xxx
CREATED:20171017T165457Z
DESCRIPTION:xxx
LOCATION:xxx
STATUS:CONFIRMED
SUMMARY:xxx
END:VEVENT
END:VCALENDAR
When I try to import this file in Google Calendar it told me that it had elaborated all Y events, but only one was imported. Someone can help me with some suggest?
A event UID is important - it's a unique identifier. If you used xxx for all of them, google probably treated it all as relating the same event.
Try validating your ics files. The validators are not perfect but they help.
https://icalendar.org/validator.html and http://severinghaus.org/projects/icv/ say missing DTSTAMPs
http://ical-validator.herokuapp.com/ says:
! CRLF should be used for newlines
Related RFC 5545 section: 3.1
! UID [xxx] encountered multiple times
Related RFC 5545 section: 3.8.4.7
If I have a multi fullDay event in my generated ical, it is missing the last day. Screenshot of the calendar below.
This ical event MultiFullday should be from 21/05 - 24/05 (21 and 24 included), but 24/05 is excluded
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170521
DTEND;VALUE=DATE:20170524
UID:590b6335922a5
DTSTAMP:20170504T192157Z
LOCATION:
DESCRIPTION:
URL;VALUE=URI:
SUMMARY:MultiFullday
END:VEVENT
This ical event Test Fullday should be only on 25/05 and it is.
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170525
DTEND;VALUE=DATE:20170525
UID:590b63359237b
DTSTAMP:20170504T192157Z
LOCATION:
DESCRIPTION:
URL;VALUE=URI:
SUMMARY:Test Fullday
END:VEVENT
The events are wrapped into this
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Vereinsplaner//Vereinsplaner v1.0//DE
URL:https://www.vereinsplaner.at/ical/user/58b7118b6d716e7478abb2.ics
NAME:Vereinsplaner
X-WR-CALNAME:Vereinsplaner
DESCRIPTION: Termine von Vereinsplaner.at
X-WR-CALDESC:Termine von Vereinsplaner.at
X-WR-RELCALID:VereinsplanerCal
COLOR:11:174:219
X-WR-TIMEZONE:UTC
X-PUBLISHED-TTL:PT1H
CALSCALE:GREGORIAN
METHOD:PUBLISH
... // Between here
END:VCALENDAR
When i import the ical, this is the result. As you can see the multi fullDay event is missing the last day
According to this Mulit-Day All-Day Event , my DTSTART and DTEND are in the right format.
In the meantime i solved this problem by adding a day to the enddate.
According to this Fullcalendar end date wrong by one day the enddate is not included.
instead of
DTSTART;VALUE=DATE:20170521
DTEND;VALUE=DATE:20170524
I write
DTSTART;VALUE=DATE:20170521
DTEND;VALUE=DATE:20170525
I am open for any other solution. But maybe this answer will help anybody else.
I need to give my manually built iCal file (.ics) some additional infos which I actually don't want to be visible for Calendar app users. Thus I need to be able to set them manually when creating an Event in an iOS application and (later) reading them from the Calendar events.
I was wondering whether it is possible to add custom fields / attributes to a iCal / .ics file itself (not by using a calendar application!). They shall not be displayed in a Calendar application but accessible for me as a mobile app developer to store IDs, references, anything when I read them out from a calendar on the device... Until now the only possibility seems to be storing those vales as description / notes, but I'm definitely not happy with that!
Is there any possibilltity? Neither could I achieve it by now nor did I find anything useful on the internet...
As an alternative, I was thinking about using the Attachment function of iCal, which - unfortunately - is visible for invited persons and the organizer himself and may not be editable / updated when edited...
Thanks in advance!
Below: ics example date
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.12.2//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
DTSTART:19810329T020000
TZNAME:MESZ
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
DTSTART:19961027T030000
TZNAME:MEZ
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20170330T114118Z
UID:38F0C7FE-9711-437F-A5FE-E670E97C6766
DTEND;TZID=Europe/Berlin:20170330T160000
TRANSP:OPAQUE
ATTENDEE;CN="John Doe";CUTYPE=INDIVIDUAL;EMAIL="john#doe.de";PAR
TSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:john#doe.de
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
SUMMARY:iCal Test100
CUSTOM:*** WHAT I WOULD NEED ***
DTSTART;TZID=Europe/Berlin:20170330T153000
DTSTAMP:20170330T114208Z
ORGANIZER;CN="Jon Doh":mailto:Jon#Doh.de
SEQUENCE:0
END:VEVENT
END:VCALENDAR
You can define your own properties and parameters. Just make sure they start with "X-". For example:
BEGIN:VEVENT
UID;X-FOO=bar:38F0C7FE-9711-437F-A5FE-E670E97C6766
X-SUPER-SECRET:abc123
...
END:VEVENT
I tried to put two events together in one ICS. To do this I helped an example put on this forum:
(...)
BEGIN:VCALENDAR
PRODID:-//bobbin v0.1//NONSGML iCal Writer//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:20100701T080000Z
DTEND:20100701T110000Z
DTSTAMP:20091130T213238Z
UID:1285935469767a7c7c1a9b3f0df8003a#yoursever.com
CREATED:20091130T213238Z
DESCRIPTION:Example event 1
LAST-MODIFIED:20091130T213238Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Example event 1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20100701T120000Z
DTEND:20100701T130000Z
DTSTAMP:20091130T213238Z
UID:1285935469767a7c7c1a9b3f0df8003b#yoursever.com
CREATED:20091130T213238Z
DESCRIPTION:Example event 2
LAST-MODIFIED:20091130T213238Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Example event 2
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
(...)
The result was that the invitation noticed inside the calendar only first event, the second was omitted.
What was wrong?
I observed the same result in Outlook and Gmail.
if you want to import many events :
To gmail , you could implement the api of gmail calendar ,
To outlook , you can alter the icalendar method to "publish" , and it would create new calendar , the new calendar will include many events
if you send just an appointment , that would not be a problem , but if you have many appointments, it would be a problem , because its weird if you include many events in an email or you send per appointment per mail