Ana içeriğe atla

VSTO 2008 – Calendar İçerisinde Yer Alan Kayıtlara Erişebilmek

Uygulama geliştirirken zaman içerisinde sıklıkla kullanmış olduğumuz Office uygulamalarına uygulama tarafında işlemler yaptırmamız gerekebiliyor. Özellikle de masaüstü ve web uygulamalarında outlook uygulamasına erişebilme ihtiyacımız da sık sık gündeme gelebiliyor. Bu işlemleri de .Net bünyesinde yer alan interop.Outlook ve office isim alanları ile sorunsuzca gerçekleştirebilmemize olanak vardır.

Fakat bazı durumlarda uygulamalar üzerinde office uygulamalarına değil de Office uygulamaların içerisinde uygulamalar geliştirmek gerekebiliyor. Bu noktada yapılması gereken daha önceki yazılarımızdan da açıkladığımız gibi Visual Studio Tools for Office 2008 (VSTO 2008) yardımı ile Office 2007 System uygulamalarına add-in yazmak olacaktır.

Not: Office System 2003 için add-in yazmak istediğimizde VSTO 2005 yardımı ile uygulama geliştirmemiz gerekmektedir. Ayrıca Office System 2003 sürümünün SP1 ve SP2 sürümlerinin bilgisayarınızda kurulu olması gerekmektedir.

Biz bu yazımızda Outlook uygulamasına bir add-in oluşturma yardımı ile takvime kayıtlı olan toplantı ve randevuları görüntüleyeceğiz.

Peki, neden bu tür uygulama ihtiyaç duyabiliriz. Örneğin, Outlook üzerinde yeni bir randevu talebi yaptığınızda aynı zaman aralığına birden fazla kayıt yapabilme olanağınız vardır. Bu işlemi outlook açılırken koyacağınız bir kontrol ile engelleyebilirsiniz. (Not: Yeni bir tablantı talebi esnasında aynı zaman aralığında birden fazla kayıt varsa otomatik olarak reddet seçeneği bulunmaktadır. Ancak bu işlem randevu taleplerinde olmamaktadır.) Ayrıca Outlook uygulamasının sağ köşesinde yer alan todo bar uygulamasında tek günlük gösterilen kayıtları haftalık ya da daha farklı bir varyasyon ile gösterilmesine olanak tanıyabilmeniz mümkündür. Ayrıca bu belirttiğim seçenekler dışında aklımıza gelmeyen daha bir çok ihtimal dahilinde kullanılabilmesi mümkündür.

Bu kadar açıklamadan sonra uygulamamızı sağlayacak olan metodu oluşturalım ve kod üzerinde açıklamaya devam edelim.

Bu aşamada yapılması gereken Visual Studio 2008 yardımı ile yeni bir proje oluşturmak olacaktır. Çalışacak olan proje şablonu ise Office tabının içerisinde yer alan Outlook 2007 add-in olacaktır.

ThisAddin.cs
public void GetAllCalendarItems()
{
    Microsoft.Office.Interop.Outlook.Application oApp = null;
    Microsoft.Office.Interop.Outlook.NameSpace mapiNamespace = null;
    Microsoft.Office.Interop.Outlook.MAPIFolder CalendarFolder = null;
    Microsoft.Office.Interop.Outlook.Items outlookCalendarItems = null;

    oApp = new Microsoft.Office.Interop.Outlook.Application();
    mapiNamespace = oApp.GetNamespace("MAPI"); ;
    CalendarFolder = mapiNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);//GetFolder("test");
    outlookCalendarItems = CalendarFolder.Items;
    outlookCalendarItems.IncludeRecurrences = true;

    foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)
    {
        if (item.IsRecurring)
        {
            Microsoft.Office.Interop.Outlook.RecurrencePattern rp = item.GetRecurrencePattern();
            DateTime first = new DateTime(2008, 8, 31, item.Start.Hour, item.Start.Minute, 0);
            DateTime last = new DateTime(2008, 10, 1);
            Microsoft.Office.Interop.Outlook.AppointmentItem recur = null;

            for (DateTime cur = first; cur <= last; cur = cur.AddDays(1))
            {
                try
                {
                    recur = rp.GetOccurrence(cur);
                    MessageBox.Show(recur.Subject + " -> " + cur.ToLongDateString());
                }
                catch
                { }
            }
        }
        else
        {
            MessageBox.Show(item.Subject + " -> " + item.Start.ToLongDateString());
        }
    }

}

Outlook içerisinde yer alan bir uygulama erişbilmek için Office.Interop.Application sınıfını kullanmak gerekmektedir. Bu sınıf yardımı ile calendar nesnesine erişip işlem yaptırabilmemiz mümkündür. Ayrıca CalendarFolder içerisinde yer alan varsayılan takvime erişebilmek için yukarıdaki kod parçasını kullanabiliriz. Farklı isim bir calendara erişebilmek için ise yan tarafta yorum satırı yapılmış olan bölümü kullanabilmeniz mümkündür. Ayrıca randevular ve toplantıların Appointment sınıfı içerisinde tutulduğundan bir önceki yazımızda bahsetmiştik. Biraz önce calendar içerisinde yer alan değerleri AppointmentItem değerleri ile foreach döngüsü ile döndürdüğümüzde AppointmentItem 'ın değerleri bizim aradığımız sonuçlar olacaktır.

Bu yazımızda Outlook takvime kaydedilen randevu ve toplantılara ilişkin kayıtlara nasıl erişebileceğimizi ve bu değerleri ne amaçla kullanabileceğimizi açıklamaya çalıştık.

Umarım yararlı olabilmiştir.

Turhal Temizer

info@turhaltemizer.com

Yorumlar

Bu blogdaki popüler yayınlar

SharePoint 2010 - Content Query for Blog Posts

I hope this post will help many of you feel comfortable with using the Content Query Web Part. In this post I will walk you through the process of creating a content query web part and configuring it to show custom field types. I will also give details on how to use XSLT to stylize and format the data being pulled. I will be using the following scenario as an example. Say that you had a site collection with a top level publishing site. This publishing site would display a the most recent blog posts from all blog sites within its own site collection. To solve this problem we will use a Content Query Web Part and a customized ItemStyle.xsl using XSLT. Please note that the “SharePoint Server Publishing Infrastructure” needs to be enabled at the site collection to display the content query web part. Step 1: Add a Content Query Web Part to Page Navigate to the site that you want the blog posts to show up and click on edit page. Under Editing Tools in the Ribb

Olasılıksız - Kitap Yorum

Olasılıksız hayatımda okuduğum en iyi kitaptı. Tek çırpıda hiç sıkılmadan, eğlenerek okudum bu kitabı, tavsiyem sizinde okumanız. Kitabın kapağı ve içeriği ile ilgili kısa bilgi aşağıdadır. Olasılık, tahmin, düşünceler, nöbetler, karışıklıklar, ileriyi görebilme zannı, dejavu ve tabii ki olasılıksız şeyler. Bu kelimelerle içli dışlı olabileceğiniz, bütün bu kelimelerin yaşamdaki yerini kavrayabileceğiniz müthiş bir uyarlama. Adam Fawer' ın ortaya çıkardığı bu uyarlama romanın müthiş bir çalışmanın ve araştırmanın sonucu ortaya çıktığının kitabın başından sonuna kadar farkındasınız. Bu uyarlamasını, derin araştırmalarıyla birleştirip romanı tekdüzelikten çıkarıp müthiş bir yere koyduğu için de Fawer' a müteşekkir oluveriyorsunuz. Sıkıcı diye nitelendirebileceğiniz teorik bilgileri bile bir çırpıda okuyuveriyorsunuz. Teorik bilgiler dahi olaylarla sonuna kadar bağlantılı aktarılmış. Tekdüzelikten çıkmış bir roman; olasılıksız. Her an olayın kurgusunun değişmesi olasılık dahilind

.Net 3.5 SP1 – Full Install Packages (Tam Kurulum)

.Net Framework 3.5 SP1 ‘i bilgisayarınıza kurmak istediğinizde normal şartlar altında Microsoft ‘un sitesinde 2.7 mb ‘lik bir dosya indirir ve kurulum işlemlerinizi bu dosya üzerinden yaparsınız. Ancak bu indirmiş oluğunuz dosya yaklaşık 220 mb ‘lik veriyi internetten indirerek kurulum yapmaktadır. İnternet çıkışına izin verilmeyen kurumlar ve kuruluşlar için bu durum bir sıkıntı oluşturmaktadır. Bu sebepten ötürü aşağıdaki link yardımı ile tam yükleme paketini indirdikten sonra hiç internet ihtiyacınız olmadan .Net 3.5 SP1 ‘i kurabilmeniz mümkün olacaktır. Link