Creating repeating event in Microsoft Outlook - calendar

Does anybody know how to create a repeating event in Outlook, when it is not on the same day every year?
I want an event that is "Tuesday in seventh week before Easter".
Is it possible to make in any other calender and move it to Outlook?

First of all, you need to create a new instance of the AppointmentItem class in the code. Then you'll need to setup the ReccurrencePattern object which you can get calling the GetRecurrencePattern method of the AppointmentItem class. If there is no existing recurrence pattern, a new empty RecurrencePattern object is returned. You can read more about that in the How To: Create a new recurring Outlook Appointment item article.
If you are new in Outlook VBA, I'd suggest starting from the Getting Started with VBA in Outlook 2010 article.

Create a yearly occurrence pattern, then modify each instance (that will create an exception) - RecurrencePattern.GetOccurrence() will return AppointmentItem representing the recurrence instance, modify its Start property and save the appointment.

Related

ICS to uppdate this and future in recurring calendar event

I am trying to programmatically create icalendar events by creating an ICS file and sending them via email to the attendees. I want to be able to create a recurring event, which works fine.
Now I also want to be able to update these events. If I try to update a single occurrence from the whole event series using UID, RECURRENCE-ID and SEQUENCE, it again gets updated fine.
But I am unable to figure a way out to update this and future events. I tried using VALUE=THISANDFUTURE with RECURRENCE-ID but only the event pointed to by RECURRENCE-ID gets updated. I also do not want to go the "delete the series and create two new ones" way because to do that I'd have to send cancellation emails to the ATTENDEES first and then new events' invites.
I came across the property RELATED-TO which might be relevant here but am unable to understand what it does and how to use it to get the result that I want. Can anyone provide me some direction?
Usage according to the RFC5545 specification ( https://datatracker.ietf.org/doc/html/rfc5545#section-3.2.13) is with RANGE, not VALUE
RECURRENCE-ID;RANGE=THISANDFUTURE:19980401T133000Z

Is Microsoft Graph API calendarView limited to a single month? How to get all events?

Is Microsoft Graph API calendarView limited to a single month? How can I get all events? Is there some implicit pagination?
I'm first checking the JSON output of events between 2017-01-01 and 2018-12-30:
https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime=2017-01-01T00:00:00.0000000&endDateTime=2018-12-30T00:00:00.0000000
and list the dates
jq '.value[] .start .dateTime'
"2017-11-22T13:30:00.0000000"
"2017-11-23T14:00:00.0000000"
"2017-11-24T14:00:00.0000000"
"2017-11-27T10:00:00.0000000"
"2017-11-27T10:00:00.0000000"
"2017-11-27T11:00:00.0000000"
"2017-11-27T14:30:00.0000000"
"2017-11-28T09:00:00.0000000"
"2017-11-29T09:00:00.0000000"
"2017-11-29T14:00:00.0000000"
No calendar events from 12th month of 2017 for example! But I have them!
And then do a similar call for by narrowing the left end of dates range between 2017-12-01 and 2018-12-30, and now I get:
"2017-12-01T12:30:00.0000000"
"2017-12-01T14:00:00.0000000"
"2017-12-04T08:30:00.0000000"
"2017-12-04T12:00:00.0000000"
"2017-12-06T09:00:00.0000000"
"2017-12-06T10:00:00.0000000"
"2017-12-07T13:00:00.0000000"
"2017-12-13T09:00:00.0000000"
"2017-12-13T09:00:00.0000000"
"2017-12-13T13:00:00.0000000"
I'm confused by List calendarView and List events documentation.
How can I get all of the events in my calendar, the ones that I can clearly see to exist in November and December of 2017, as well as in January, and February of 2018?
Do I have to call this API repeatedly for every month in a year? (I hope there's a single call I can make to get all the events in a year, or two years, after which I can filter, process, etc.)
Difference between list events and list calendarView
When you list events (GET /me/events), you get a non-expanded list of items in the calendar. What that means is that if you have recurring events, you would only get the series master in your results. It would be up to you to read the recurrence pattern and expand the event.
When you list a calendar view (GET /me/calendarview?...), you get an expanded list of items. That means the server does the work to expand any recurring events and build a "view" of your calendar. So in this case if you have a recurring event, instead of getting the series master, you would get one or more occurrences of the series (depending on how many times it repeats in your view window). Because of this expansion work, you must provide a start and end time to put some sort of bounds on the call.
Another way of looking at it is the calendar view is more like what you're used to seeing when you view your calendar in Outlook.
So where's all my events?
I'm not aware of any specific limitation on the size of the window for a calendar view. (Not saying there isn't one, I'm just not aware of it). The more likely explanation is that you're not seeing all the events you expect because all API requests that return collections do have built-in paging. By default, you're limited to 10 items in the response. You should also see in your response an #odata.nextLink, which is the URL you can use to request the next page of results (again, 10 being the default page size). You can increase your page size by using the $top parameter, up to a maximum of 1000 (IIRC).
GET /me/calendar/calendarView?startDateTime=2017-01-01T00:00:00.0000000
&endDateTime=2018-12-30T00:00:00.0000000&$top=1000

how to create different UI components every times in runtime and save their contents into database and save the UI which created on the page?

Dears
good day
I need your help for the following case:
The activity nature of the client is very dynamic
Need to have a dynamic form (he wants to create many form every day by himself in runtime). And add some components in the runtime.
He doesn't have a standard form so he need every day to create new form
For example he can make today a form with group of input text and group of check box and table and tomorrow he need to make a new form with input text and radio and table also etc..,.
In addition he needs to achieve and save it into database to use it and retrieve it later , and he wants to save every form with its UI contents which he created in runtime to be able to view it later on the jsf page.
So he want to save created form contains data into database
And also he wants to arrange the component on the page by his own way
And I putted this case in OTN :
https://community.oracle.com/message/14356236#14356236
How could I do it?
Regards
You can find a series of blog posts of Andrejus, right here:
http://andrejusb.blogspot.co.uk/2015/09/adf-12c-dynamic-forms-with-adf-bc-ui.html

Automatic event creation (google Apps Script)

I not a IT so sorry if what I say or what I write is stupid things.
So I'm trying to create a script in google app to create with a redundancy.
I have two questions:
how to select the calendar where the event will be created
Is it possible to repeat this event each hour?
Thank you for your help
Mainly, Apps script is strongly related with Javascript. You will need it mainly with such datatypes as Date.
Selecting calendar
Following command returns all calendars in array:
var calendars = CalendarApp.getAllCalendars();
Thus you can access each individual calendar by doing this:
calendars[i] where i any number between 0 and (# of calendars-1)
For example if you want get name of 2nd calendar:
Logger.log('name of 2nd calendar ==>' + calendars[1].getName());
Hourly event
You can make for loop for each hour and calling createEvent(title, startTime, endTime) command
More commands in Google Apps Script Reference
With regards

Why does EWS Managed API SyncFolderItems not return recurring appointments

I'm using the managed API of EWS to synchronize a scheduling application with exchange calendars. I get all normal meetings fine, but I am not getting any repeating/recurring appointments.
My code follows:
itemChangeCollection = _service.SyncFolderItems(
new FolderId(WellKnownFolderName.Calendar,
new Mailbox(Email)),
propertySet,
null,
Settings.Default.ExchangeSyncFetchCount,
SyncFolderItemsScope.NormalItems,
syncState);
What do I need to change to see the recurring appointments as well?
Instances of recurring appointments are not "real" items in the store. They are virtual in the sense that they are calculated whenever you perform a search with a calendar view and a timeframe.
The only way to find recurring appointments is to use the FindItems method.
SyncFolderItems only returns the necessary information to reconstruct a recurring serie but does not expand the individual occurrences. If you need expanded occurrences you need to use the FindItems method.
However, even assuming you can expand the recurrence yourself, SyncFolderItems alone does not provide all the necessary information.
SyncFolderItems will return a list of events with Single or RecurringMaster AppointmentType. A RecurringMaster event contains the ModifiedOccurrences and DeletedOccurrences properties. Unfortunately the items in ModifiedOccurrences only contains the ItemId, not the Item itself. It seems necessary to solve all exception separately to get the fields of modified occurrences. From the documentation:
Each OccurrenceInfo object in the ModifiedOccurrences collection
contains four properties: End, ItemId, OriginalStart, and Start. To
access additional properties on the exception item, you must bind to
the item by using the OccurrenceInfo.ItemId.
foreach (OccurrenceInfo item in recurringMasterItem.ModifiedOccurrences)
{
Appointment modifiedItem = Appointment.Bind(service, item.ItemId);
Console.WriteLine("Subject: " + modifiedItem.Subject);
}
In other words, with the data you get from SyncFolderItem you can expand a recurrence, including time exceptions and deleted occurrences but you would have to resolve exceptions on other fields (ie. summary, body, location. etc) with additional .Bind() calls.
SyncFolderItems will give you the recurring master items, but does not expand them into occurrences. The recurring master holds the common properties for all items, the recurring pattern and a list of exceptions and deletions. This is all the information required to expand them to occurrences. Although you are supposed to call Appointment.BindToOccurrence to bind the properties for an individual occurrence from a recurring master based on an occurrence index. The downside is this makes an EWS call for each occurrence.

Resources