Search code examples
c#.netoffice-interop

How to colorize Categories for an Outlook AppointmentItem


I'm using the office .NET framework to create appointments in Outlook. The code that creates the appointments looks like this:

    private void createCalendarEvent(DateTime start, DateTime end, String dept, String subj, String subjType, String room)
    {
        AppointmentItem apt = (AppointmentItem)OLapp.CreateItem(OlItemType.olAppointmentItem);

        apt.Start = start;
        apt.End = end;
        apt.Subject = subj + " - " + subjType;
        apt.Body = "Subject: " + subj + " (" + subjType + ")"
                + "\nDepartment: " + dept
                + "\nRoom: " + room
                + "\n\nCreated by " + this.Text
                + "\n On " + DateTime.Now.ToLongDateString() + " At " + DateTime.Now.ToLongTimeString();
        apt.Location = room;
        apt.Categories = subj;
        apt.Save();
    }

This works just fine, but the category I'm setting does not have a colour associated with it. I want the appointments in outlook to appear in a different color depending on the category set. Is there some way i can manually set the category colours? Or even better, a way to get the framework to pick category colours for me automatically?


Solution

  • The answer to this question deals with categories. Specifically, here's some code (VB.net, but easily convertable) that will create a dark olive category:

    Private Shared ReadOnly CATEGORY_TEST As String = "Custom Overdue Activity"
    
    ' This method checks if our custom category exists, and creates it if it doesn't.
    Private Sub SetupCategories()
        Dim categoryList As Categories = Application.Session.Categories
        For i As Integer = 1 To categoryList.Count
            Dim c As Category = categoryList(i)
            If c.Name.Equals(CATEGORY_TEST) Then
                Return
            End If
        Next
    
        categoryList.Add(CATEGORY_TEST, Outlook.OlCategoryColor.olCategoryColorDarkOlive)
    End Sub
    

    Category colors are either set in Outlook, or in the code above when creating a category in code.