While using C# and Micros9ft Graph Client Library version 5.35.0, the following line of code is throwing exception...
var events1 = await graphClient.Me.Calendars[calendar.Id].CalendarView.Request().Expand("recurrence,singleInstances").GetAsync();
The error is ...
Error CS1061 'CalendarViewRequestBuilder' does not contain a definition for 'Request' and no accessible extension method 'Request' accepting a first argument of type 'CalendarViewRequestBuilder' could be found (are you missing a using directive or an assembly reference?)
The code triggering this error is ...
var authenticationProvider = new BaseBearerTokenAuthenticationProvider(new TokenProvider());
var graphClient = new GraphServiceClient(authenticationProvider);
var calendars = await graphClient.Me.Calendars.GetAsync();
foreach (var calendar in calendars.Value)
{
string claendarInfo = $"Calendar Name: {calendar.Name} ; id: {calendar.Id} ; isDefault: {calendar.IsDefaultCalendar} ; Owner: {calendar.Owner.Address} \r\n\r\n";
tbEventsList.Text += claendarInfo;
var events1 = await graphClient.Me.Calendars[calendar.Id].CalendarView.Request().Expand("recurrence,singleInstances").GetAsync();
}
... any suggestions welcome. Thank you!
------ below is a longer response to 'user2250152'...
Dear User user2250152,
Thanks that was valuable info. How does one loop through the returned data if the response comes on multiple pages?
Can one set the paging size?
In the Google Calendar API (we tried this months ago), it was simple.
request.MaxResults = 500;
and Paging was also straight forward
if (events.NextPageToken == null)
{
break;
}
// Prepare the next page of results
request.PageToken = events.NextPageToken;
What are similar things here using Version 5?
I read the document, it has something called https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/docs/upgrade-to-v5.md#pageiterator
I am confused as to how one uses this example in this context while retrieving events. Perhaps you have some example code?
Thank you!
There are breaking changes in SDK v5 and Request()
method was removed. For calendarView
, you need to specify start and end date time.
var authenticationProvider = new BaseBearerTokenAuthenticationProvider(new TokenProvider());
var graphClient = new GraphServiceClient(authenticationProvider);
var calendars = await graphClient.Me.Calendars.GetAsync();
// for all events
var allEvents = new List<Event>();
foreach (var calendar in calendars.Value)
{
string claendarInfo = $"Calendar Name: {calendar.Name} ; id: {calendar.Id} ; isDefault: {calendar.IsDefaultCalendar} ; Owner: {calendar.Owner.Address} \r\n\r\n";
tbEventsList.Text += claendarInfo;
var events1 = await graphClient.Me.Calendars[calendar.Id].CalendarView.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.StartDateTime = "2023-11-19";
requestConfiguration.QueryParameters.EndDateTime = "2023-11-23";
// not possible to expand
// requestConfiguration.QueryParameters.Expand = new string []{ "name1", "name2" };
});
// page iterator
var pageIterator = PageIterator<Microsoft.Graph.Models.Event, EventCollectionResponse>
.CreatePageIterator(graphClient, events1, (evnt) =>
{
allEvents.Add(evnt);
return true;
});
await pageIterator.IterateAsync();
}
For now, it seems to be impossible to define properties to be expanded. No property for expand query parameters generated for SDK.