I am finding it difficult to understand how ics file works in lotus notes. Invitation works precisely as defined whereas in the cancellation event nothing happens.
Say for example, when I import an ics file 2 calendar entries, then the entries are created as expected.
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
ORGANIZER:CN=Chintan Jayesh Parekh/O=main
DTSTART:20150504T140000
DTEND:20150504T150000
LOCATION:Test - 3
SUMMARY;LANGUAGE=en-us:Test - 3
DESCRIPTION;LANGUAGE=en-us:bvnvn
UID:00EDF2741C3E857965257E39002A2900
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
ORGANIZER:CN=Chintan Jayesh Parekh/O=main
DTSTART:20150505T140000
DTEND:20150505T150000
LOCATION:Test - 3
SUMMARY;LANGUAGE=en-us:Test - 3
DESCRIPTION;LANGUAGE=en-us:bvnvn
UID:11EDF2741C3E857965257E39002A2911
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
However, when I try to delete the same calendar entries, using the following ICS file, nothing happens:
BEGIN:VCALENDAR
VERSION:2.0
METHOD:CANCEL
BEGIN:VEVENT
ORGANIZER:CN=Chintan Jayesh Parekh/O=main
DTSTART:20150504T140000
DTEND:20150504T150000
LOCATION:Test - 3
SUMMARY;LANGUAGE=en-us:Test - 3
DESCRIPTION;LANGUAGE=en-us:bvnvn
STATUS:CANCELLED
UID:00EDF2741C3E857965257E39002A2900
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
ORGANIZER:CN=Chintan Jayesh Parekh/O=main
DTSTART:20150505T140000
DTEND:20150505T150000
LOCATION:Test - 3
SUMMARY;LANGUAGE=en-us:Test - 3
DESCRIPTION;LANGUAGE=en-us:bvnvn
STATUS:CANCELLED
UID:11EDF2741C3E857965257E39002A2911
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
The only difference here between the 2 ics files is the method and the status. I have tried the same thing on a google calendar and it simply deletes the appointments after the second import, however, nothing seems to happen when we do so in lotus notes. Is there any field we are suppose to set specially for notes so as to delete the entries?
Any help would really be appreciated.
Not sure whether it will solve your problem but:
In all of the above, you are missing a DTSTAMP property, with a datetime in UTC corresponding to the date where that particular version of the event was created/modified. And of course, the DTSTAMP for the cancelled version shall be later in time than the original one.
In your cancelled events, you are also missing a SEQUENCE property (with a value greater than the one of the original event). See https://www.rfc-editor.org/rfc/rfc5546#section-3.2.5 .
Finally I found the solution.
As #arnaudq pointed out I was not following the structure correctly.
It had something to do with the naming structure of the organizer field specifically in Notes (since it worked well on google calendar and few other application I tried with).
//Wrong Version
ORGANIZER:CN=Chintan Jayesh Parekh/O=main
//Corrected Version
ORGANIZER;CN=Chintan Jayesh Parekh/O=main:mailto:CN=Chintan Jayesh Parekh/O=main
Hope it is useful to someone facing the same problem.
Related
How to format an ICS file attached to an email that automatically sets the time zone correctly in Google Calendar so when the receiving party clicks "add to calendar" it looks like the screenshot below. (appointment set in specific time zone. New York in sample below).
We have played VTZIMEZONE. TZID.
If you want to manually get someone to click a link you can set the querystring "ctz" to value you want.
https://calendar.google.com/calendar/r/eventedit?text=Event%20Title&details=Example%20of%20some%20description.%20See%20more%20at%20https%3A%2F%2Fstackoverflow.com%2Fquestions%2F10488831%2Flink-to-add-to-google-calendar&location=123%20Some%20Place%2C%20City&dates=20200222T100000/20200222T113000&**ctz=America%2FNew_York**
Below does not work.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Appointment Reminder//EN
X-WR-TIMEZONE:America/New_york
BEGIN:VTIMEZONE
TZID:America/New_york
X-LIC-LOCATION:America/New_york
END:VTIMEZONE
BEGIN:VEVENT
UID:61bb267c4074e
DTSTART;TZID=America/New_york:20211216T180000
SEQUENCE:0
TRANSP:OPAQUE
DTEND;TZID=America/New_york:20211216T210000
DTSTAMP:20221007T192043Z
UID:575af6e9-1a52-4b12-b24c-d6057e0cca60
CREATED:20221007T192043Z
DESCRIPTION:
LOCATION:SomePlace
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:OPAQUE
ORGANIZER;CN=Matthew
SUMMARY:Test Appointment
END:VEVENT
END:VCALENDAR
By default, Google Calendar automatically sets the timezone based on the users location (or pre-set timezone on the calendar settings) as explained here in this article:
Also, the ICS file generated by Google Calendar contains details that will tell you about its creation, the time and location of the event, who organized it and so on and so forth. Mostly, this is used for debugging/troubleshooting purposes, you can parse the information from the ICS file but it cannot automatically set event details.
I am currently developing an appointment calendar with React and NodeJS using the Google Calendar API. The goal is to archive the following:
Step 1: User selects the desired Date in Calendar (done)
Step 2: Show Free 30 Minutes Timeslots in between the opening hours (done)
Step 3: Book Appointment and add to Calendar (done)
But now the problem is, that each timeslot can have 10 individual bookings and I want to show how much is left (e.g 3 People booked the slot at 15:30, I want to show that there are 7 Slots left) Currently if one booked the 15:30 slot it is removed. That is because I use a FreeBusy Query, and this only shows me the busy time not how many events there are.
My first thought was to save the bookings also in a database and then look for every timeslot how many people booked before, but this seems like not the best solution.
Do you have any better ideas on how to solve this problem?
Thanks in advance
Just a suggestion but maybe for each of the event placed on the calendar you could attach an extended property to mark the event as booked.
"extendedProperties": {
"shared": {
"booked": "false",}
}
https://developers.google.com/calendar/v3/reference/events#resource
Then whenever someone books an event, you could mark that event as booked by changing the extended property mentioned. To display the amount of event that are free to book you could filter the list of events by timeMin, timeMax of the selected Timeslot and count the number of events that are marked free or booked.
I recently was able to get management to stop using poorly built monthly calendar DOC files and to start using SharePoint calendars to keep try of events and so forth. Gives them searchable records and allows me to do actual programming based on events and injecting events into SharePoint programmatically when needed.
The problem is that they dont have a good way to print events because the print function from the browser is garbage. But when you link the calendar to Outlook it is well formatted but if a day has more than 4 events it just adds "X more events" below. Thus making the events hidden from a printed copy.
Do you have a suggestion for management being able to print monthly view calendars and show all events on a busy calendar?
Thanks!
The Calendar Printing Assistant might help you here. Its an official addon for Outlook that specializes in printing your calendar in Outlook.
https://www.microsoft.com/en-ca/download/details.aspx?id=16645
I've been jacking around with iCal and email and through some fiddling, I've managed to get gmail to recognize that I do, in fact, have an iCal file embedded in the message. So it looks something like this:
This is accomplished by adding a third portion to the multipart email that looks something like:
--B_ALT_51b091604704b
Content-Type: text/calendar; method=REQUEST charset=utf-8
Content-Transfer-Encoding: 7bit
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My Company LLC//My Reminder System//EN
BEGIN:VEVENT
UID:2201#example.com
DTSTAMP:20130606T134048Z
ORGANIZER;CN="Robb Nixon":MAILTO:robb.nixon#motorsolutions.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=
TRUE;CN=Robb Nixon;X-NUM-GUESTS=0:mailto:robb.nixon#motorsolutions.com
DTSTART:20130608T120000Z
DTEND:20130608T130000Z
SUMMARY:Follow-Up: Allan Chappell ("New Template")
DESCRIPTION:Subject Line: "New Template"\nDate Sent: "June 6\, 2013 # 8:40
AM CDT\nRecipients:\n TO: Allan Chappell (------------------)\,\n \n
Email Copy:\n\nDear Allan\,\n\nAn Introduction\n\nMy Body\n\nNext Steps\n\n
Robb Nixon\nWeb Developer\nSalve Solutions\nmotorsolutions.com\n\n\n\n
SEQUENCE:0
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
Note, this is an example with some of the values changed... my real invite follows the folding rules to the letter. Also note that my gmail email address would be in the place of robb.nixon#motorsolutions.com as well, so in theory gmail should know that I am the organizer of the event.
When someone sends me an invite via gmail, I instead get the following:
Notice that it has "Going? Yes Maybe No" and the item is automatically added to my calendar. as it arrives to my email without having to hit the "Add to Calendar".
Does anyone know what I'm missing to make this happen for my iCal files? Or is it a Gmail thing where they recognize it's from them and go ahead and automatically add it to your calendar.
Your iCalendar stream is missing a METHOD:REQUEST property in the VCALENDAR object (i.e. below the PRODID but before the BEGIN:VEVENT.
Gmail may also get confused by the fact that you are also the organizer of this meeting.
I've got an events channel set up on a client site where everything is working just fine. However they now have a single event that runs every Sunday. Due to using the start_on parameter to only show events from the current month onwards this recurring event is now displaying a blank page.
Is there a simple way to have the entries publish date automatically updated to the current month or somehow display recurring events correctly. Client is unwilling to spend money on a new module such as Solspace Calendar.
You could set up a cron job on the server to run a PHP script which would modify the entry date on your recurring entry.
Yeah I see your dilemma, Sean - separating the event from its month and year (year in particular) to have one even display multiple times... What about using MX Clone to simply allow them to create multiple instances of the same entry (granted, they'd have to adjust the date for each one too, but that can be done en masse from the mass edit screen if you're using one of the native date fields and not a custom date field)?
Could you make the entry sticky? Not sure whether that would override the start_on parameter or not.