Abrufen von Verfügbarkeitsinformationen für den Vorgesetzten eines Exchange-Benutzers
In diesem Beispiel wird das nächste freie 60-minütige Zeitfenster für den Vorgesetzten eines Benutzers im Kalender angezeigt.
Beispiel
Das Codebeispiel überprüft, ob es sich beim aktuellen Benutzer um einen Exchange-Benutzer handelt. Ist dies der Fall und verfügt der aktuelle Benutzer über einen Manager, werden die Informationen des Managers durch einen Aufruf der GetExchangeUser -Methode des AddressEntry -Objekts und der GetExchangeUserManager -Methode des ExchangeUser -Objekts abgerufen. Die Informationen des Managers sind in einem ExchangeUser-Objekt enthalten, das den Frei/Gebucht-Zeitplan des Managers umfasst.
Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub GetManagerOpenInterval()
Const slotLength As Integer = 60
Dim addrEntry As Outlook.AddressEntry = _
Application.Session.CurrentUser.AddressEntry
If addrEntry.Type = "EX" Then
Dim manager As Outlook.ExchangeUser = _
Application.Session.CurrentUser. _
AddressEntry.GetExchangeUser(). _
GetExchangeUserManager()
If Not (manager Is Nothing) Then
Dim freeBusy As String = _
manager.GetFreeBusy(DateTime.Now, slotLength, True)
For i As Integer = 1 To freeBusy.Length - 1
If (freeBusy.Substring(i, 1) = "0") Then
' Get number of minutes into
' the day for free interval
Dim busySlot As Double = (i - 1) * slotLength
' Get an actual date/time
Dim dateBusySlot As DateTime = _
DateTime.Now.Date.AddMinutes(busySlot)
If (dateBusySlot.TimeOfDay >= _
DateTime.Parse("8:00 AM").TimeOfDay And _
dateBusySlot.TimeOfDay <= _
DateTime.Parse("5:00 PM").TimeOfDay And _
Not (dateBusySlot.DayOfWeek = _
DayOfWeek.Saturday Or _
dateBusySlot.DayOfWeek = DayOfWeek.Sunday))Then
Dim sb As StringBuilder = New StringBuilder()
sb.AppendLine( _
manager.Name & " first open interval:")
sb.AppendLine(dateBusySlot.ToString("f"))
Debug.WriteLine(sb.ToString())
End If
End If
Next
End If
End If
End Sub
private void GetManagerOpenInterval()
{
const int slotLength = 60;
Outlook.AddressEntry addrEntry =
Application.Session.CurrentUser.AddressEntry;
if (addrEntry.Type == "EX")
{
Outlook.ExchangeUser manager =
Application.Session.CurrentUser.
AddressEntry.GetExchangeUser().GetExchangeUserManager();
if (manager != null)
{
string freeBusy = manager.GetFreeBusy(
DateTime.Now, slotLength, true);
for (int i = 1; i < freeBusy.Length; i++)
{
if (freeBusy.Substring(i, 1) == "0")
{
// Get number of minutes into
// the day for free interval
double busySlot = (i - 1) * slotLength;
// Get an actual date/time
DateTime dateBusySlot =
DateTime.Now.Date.AddMinutes(busySlot);
if (dateBusySlot.TimeOfDay >=
DateTime.Parse("8:00 AM").TimeOfDay &
dateBusySlot.TimeOfDay <=
DateTime.Parse("5:00 PM").TimeOfDay &
!(dateBusySlot.DayOfWeek ==
DayOfWeek.Saturday |
dateBusySlot.DayOfWeek == DayOfWeek.Sunday))
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(manager.Name
+ " first open interval:");
sb.AppendLine(dateBusySlot.ToString("f"));
Debug.WriteLine(sb.ToString());
}
}
}
}
}
}