var publicFolders = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);
var folderView =
new
FolderView(1);
var searchFilter =
new
SearchFilter.IsEqualTo(FolderSchema.DisplayName,
"Public Calendar"
);
var findFoldersResult = publicFolders.FindFolders(searchFilter, folderView).First();
var calendarView =
new
CalendarView(DateTime.Today, DateTime.Today.AddDays(62));
var appointments = service.FindAppointments(findFoldersResult.Id, calendarView);
if
(appointments.Any()) service.LoadPropertiesForItems(from Item item
in
appointments select item, PropertySet.FirstClassProperties);
foreach
(var appointment
in
appointments)
{
var calendarEvent = GetItem(calendarList, appointment.Id.UniqueId);
try
{
calendarEvent[SPBuiltInFieldId.Title] = appointment.Subject;
}
catch
{}
try
{
calendarEvent[SPBuiltInFieldId.StartDate] = appointment.Start;
}
catch
{ }
try
{
calendarEvent[SPBuiltInFieldId.EndDate] = appointment.End;
}
catch
{ }
try
{
calendarEvent[SPBuiltInFieldId.fAllDayEvent] = appointment.IsAllDayEvent;
}
catch
{ }
try
{
calendarEvent[SPBuiltInFieldId.Location] = appointment.Location;
}
catch
{ }
try
{
calendarEvent[SPBuiltInFieldId.FreeBusy] = appointment.LegacyFreeBusyStatus == LegacyFreeBusyStatus.NoData ?
null
: appointment.LegacyFreeBusyStatus.ToString();
}
catch
{ }
try
{
calendarEvent[SPBuiltInFieldId.Description] = appointment.Body.Text;
}
catch
{ }
try
{
var categories =
new
SPFieldMultiChoiceValue();
foreach
(var category
in
appointment.Categories)
{
categories.Add(category);
}
calendarEvent[SPBuiltInFieldId.Category] = categories;
}
catch
{ }
try
{
var attendees =
new
SPFieldUserValueCollection();
attendees.AddRange(appointment.RequiredAttendees.Select(attendee => web.AllUsers.GetByEmail(attendee.Address)).Select(user =>
new
SPFieldUserValue(web, user.ID, user.Name)));
calendarEvent[SPBuiltInFieldId.ParticipantsPicker] = attendees;
}
catch
{ }
calendarEvent.Update();
}