Eminim birçok kullanıcı Microsoft’un Ofis 365 için geliştirdiği yapay zekâ eklentisi Copilot uygulamasını bekliyor. Aşağıda örneğini verdiğim ChatGPT kullanım senaryosunun Copilot ile çok daha kolay olacağı kesin. Bu arada Copilot ile neler yapabileceklerinizi dilerseniz bu yazımızdan okuyabilirsiniz.
Konumuz ChatGPT kullanarak Microsoft Outlook uygulamasında otomatik olarak takvim kaydı oluşturmak. Bu ihtiyaç Anadolu Efes Euro lig basket maçlarının outlook takvimime kaydederek maçların hangi gün hangi saatte oynanacağını ve bir gün öncesinde maç günü ile ilgili otomatik uyarı almak istememle ortaya çıktı.
Normal şartlarda bu ihtiyaç için internette kısa bir arama yaparak maç listesini bulmak ve her bir maç için outlook takvim uygulamasında bir kayıt oluşturmam yeterli olacaktı. Bu ihtiyacı ChatGPT’ye yaptırabilir miyim diye düşünerek kendisi ile sohbete başladım. (Tüm işlemler ChatGPT plus kullanıcı hesabı ile yapıldı)
- Öncelikle https://anadoluefessk.org/haber/2023-2024-sezonu-euroleague-fiksturumuz-aciklandi adresinde Anadolu Efes’in 2023-2024 Eurolig maçlarının listesini buldum ve ChatGPT’ye aşağıdaki soruyu (prompt) yazdım.
- ChatGPT’nin cevabı aşağıdaki şekilde oldu. Sol üst taraftaki “Copy code” linkine tıklayıp içeriği notepad’e yapıştırdım ve txt olarak dosyayı kaydettim.
- Oluşturduğum dosyayı excel’de açtım. Yukardaki gibi formatlanmış metin dosyalarını excel’e almak için import özelliğinden faydalandım. Her bir kolonun excel’de bir kolona gelebilmesi için import aşamasında ayraç belirtecini “|” olarak seçmeniz yeterli olacaktır. Aldığım içerikle birlikte dosyayı xlsx formatında sakladım ve elimde aşağıdaki gibi bir excel tablosu oluştu.
- En zevkli kısmı bundan sonra başlıyor. Şimdi bu tablodaki her bir satırı tek tek okuyarak Outlook’ta ilgili tarih ve saat için birer takvim kaydı oluşturmamız gerekiyor. ChatGPT’ye aşağıdaki prompt’u yazdım:
- ChatGPT’nin cevabı aşağıda! Evet yukardaki excel tablosunda bulunan 34 adet maçın outlook takviminde kaydını oluşturabilmem için gerekli bir program kodunun tamamını hazırladı.
- Hatta bu kodu Excel’de nasıl makro oluşturup kullanacağıma yönelik yönergeyi de verdi.
- Bu makroyu uygulamak için şu adımları takip edebilirsiniz:
- Excel dosyasını açın ve
Alt + F11
tuşlarına basarak VBA (Visual Basic for Applications) editörünü açın. Insert
menüsündenModule
seçeneğini seçin.- Yukarıdaki kodu yeni modül penceresine yapıştırın.
Alt + Q
tuşlarına basarak VBA editörünü kapatın.Alt + F8
tuşlarına basarak “Makro” penceresini açın,CreateAppointments
makrosunu seçin veRun
butonuna tıklayın.
- Excel dosyasını açın ve
Makro çalıştırıldığında, Excel’deki her satır için bir Outlook takvim randevusu oluşturacaktır. Lütfen randevuların başlangıç ve bitiş saatlerini kontrol edin ve gerektiği şekilde ayarlayın. Kodda, her maçın 2 saat sürdüğünü varsaydık, bu süreyi değiştirmek istiyorsanız, olApt.End = olApt.Start + TimeValue("02:00")
satırını değiştirin.
- ChatGPT’nin belirttiği gibi prosedürü izleyerek VBA makro kodunu kopyalayarak Visual Basic for Application ara yüzünde yeni bir modül içerisine yapıştırdım. Excel’e dönerek ilgili komut (Alt+F8 – CreateAppintments) ile makroyu çalıştırdım. Bu aşamada program “runtime error” type mismatch hatası verdi. ChatGPT’ye hatayı olduğu gibi yazdım:
- ChatGPT’nin cevabı nokta atışı. Excel’e taşıdığımız metin içeriğinin ilgili kolanların doğru formatlanmadığına yönelik yönlendirmesi yerinde. Kontrol ettiğimde tarih ve saat formatlarının metin olduğunu ve sağında solunda boşluklar olduğunu tespit ettim. Excel’in Trim() fonksiyonu ile boşluklardan kurtulup tarih ve saat formatlarını ChatGPT’nin belirttiği gibi düzelttim.
Bu güncellenmiş makroda, StartDateTime
adında bir değişken tanımladık ve bu değişkeni, tarih ve saat hücrelerini birleştirerek doldurduk. Bu, olApt.Start
ve olApt.End
ifadelerini ayarlamamıza yardımcı olacaktır. Bu güncellenmiş makroyu kullanarak aynı hata mesajını alıp almadığınızı kontrol edin. Eğer hata devam ederse, tarih ve saat hücrelerinin biçimlendirmesini kontrol edin ve gerektiği şekilde düzeltin.
- Burada emin olmak için ChatGPT’ye “Buradaki Tarih ve Saat formatları tam olarak nasıl olmalı ki bu hatayı almaalım?”sorusunu ilettim. Bana verdiği cevap:
- Yeni makroyu kopyalayarak tekrar çalıştırdım ve yine benzer bir hata aldım. ChatGPT’ye “Tüm düzeltmeleri yapmama rağmen hala aynı hatayı alıyorum. Ne yapabilirim?” sorusunu ilettim?
- ChatGPT Excel tablosundaki tarih ve saat birleştirme yöntemini değiştirmenin gerekeceğini belirterek kodu yeniden düzenledi.
Bu kodda, TheDate
ve TheTime
adında iki ayrı değişken kullanarak tarih ve saati ayrı ayrı alıyor ve sonra bu iki değeri StartDateTime
değişkeninde birleştiriyoruz. Bu şekilde, tarih ve saat bilgilerini ayrı ayrı işleyerek ve sonra birleştirerek “Type Mismatch” hatasını önlemeyi amaçlıyoruz.
Bu güncellenmiş makroyu kullanarak aynı hatayı alıp almadığınızı kontrol edin. Eğer hata devam ederse, hücrelerin biçimlendirmesini ve makro kodunu dikkatlice gözden geçirerek herhangi bir anormallik olup olmadığını kontrol edin.
- Yeni kodu kopyalayarak excel’e tekrar kopyalayarak çalıştırdım ve yine aynı hatayı aldım. ChatGPT’ye: “TheTime değişkeninde type mismatch hatası alıyorum.” promptunu ilettim.
Bu kodda, TimeValue
fonksiyonunu çağırmadan önce Format
fonksiyonunu kullanarak saat bilgisini hh:mm
biçimine dönüştürüyoruz. Bu değişiklik, TimeValue
fonksiyonunun saat bilgisini doğru bir şekilde işlemesini sağlamalıdır.
Bu güncellenmiş makroyu kullanarak aynı hatayı alıp almadığınızı kontrol edin. Eğer hata devam ederse veya başka bir hata alırsanız, lütfen bana bildirin ve sorununuzu çözmek için size daha fazla yardımcı olacağım.
- Ve BİNGO kod çalıştı! Makro’yu debug modda adım adım çalıştırarak ilk kaydın Outlookta oluştuğunu gözlemledikten sonra kodu biraz daha geliştirmek istedim ve takvim kaydına 1 gün önceden beni uyaracak bir hatırlatıcı koyacak şekilde kodu yeniden düzenlemesini istedim. “Teşekkürler kod çalıştı. Bu kodu outlook takvim reminder 1 gün olacak şekilde günceller misin?”
Bu güncellenmiş kodda, olApt.ReminderSet = True
satırını ekledik, bu da hatırlatıcının etkin olduğunu belirtir. Ayrıca, olApt.ReminderMinutesBeforeStart = 1440
satırını ekledik, bu da hatırlatıcının etkinlik başlamadan 1 gün (1440 dakika) önce tetiklenmesini sağlar.
- Bu kodu da kopyalayarak çalıştığını gördüm. İlave bir istek olarak: “Teşekkürler. ikinci kolon Ev Sahibi Takım değeri “Anadolu Efes” olduğunda maç Sinan Erdem Spor Salonunda oynanacağı için takvim kaydında location “Sinan Erdem Spor Salonu” olmalı değilse “Deplasman” olmalı. Kodu bu şekilde günceller misin?”
Bu kodda, If ws.Cells(r, 2).Value = "Anadolu Efes" Then
satırını ekledik, bu da 2. kolondaki değer “Anadolu Efes” ise Location
özelliğini “Sinan Erdem Spor Salonu” olarak, değilse “Deplasman” olarak ayarlar.
- Bu kodda çalıştı. İlave bir özellik olarak takvim kaydını bir davete çevirerek alıcılar eklemesini istedim. Yazdığım prompt: “Aynı excel workbook ikinci sayfasının birinci kolonunda “Mail Adresleri” bulunuyor. Bu mail adreslerini yukardaki kodda oluşturulan takvim kayıtlarına davetli olarak eklemek istiyorum. Bunun için kodu düzenler misin?”
Bu kodda, wsEmails
adında yeni bir Worksheet
nesnesi oluşturduk ve bu nesneyi 2. çalışma sayfasına ayarladık. Daha sonra, LastRowEmails
adında bir değişken tanımladık ve bu değişkeni 2. çalışma sayfasındaki son satır numarasına ayarladık. Son olarak, For e = 2 To LastRowEmails
döngüsünü ekledik ve bu döngü içinde olApt.Recipients.Add
metodunu kullanarak her bir e-posta adresini davetli olarak ekledik. Bu şekilde, her bir randevu oluşturulduğunda, 2. çalışma sayfasındaki tüm e-posta adreslerini davetli olarak ekliyoruz.
- Aynı excel çalışma kitabında ikinci bir sayfa açarak takvim kayıtlarına eklenecek davetli mail adreslerini yazdım. Yukardaki prompt ile ChatGPT’nin yeniden düzenlediği kod çalıştı. Takvim kaydını oluşturduğunu ancak davetli mail adresine daveti mail olarak göndermediğini tesipt ettim. “Harika, ancak takvim kaydı oluşturulmasına rağmen davetlilere takvim daveti gönderilmiyor. Bunu nasıl çözeriz?” Promptu ile durumu ChatGPT’ye ilettim.
Bu kodda, olApt.Save
satırından sonra olApt.Send
satırını ekledik. Bu satır, randevuyu davetlilere gönderir. Artık bu makroyu çalıştırdığınızda, davetliler için bir e-posta daveti gönderilmesi gerektiğini görmelisiniz.
- Kod yine hatasız çalıştı. Takvim kayıtlarını oluşturdu ve davetlileri alıcılar kısmına ekledi. Ancak yine davet outlook tarafında alıcılara iletilmedi. Muhtemelen Outlook buna izin vermiyor olabilir.
Asıl amacıma ulaştım, alıcılara takvim davetini iletme kısmını kendim yapacağım:-)
Her şeyi ChatGPT’den bekleyebilir miyiz?
Kısaca cevap evet. İster excel de bir makro yazdırın, ister internette yüzlerce sayfa içerikteki bir raporu okutup özetini isteyin isterseniz bir web sitesi tasarımı yaptırın hatta o web sitesini sıfırdan sizin için kodları ile birlikte oluştursun.
ChatGPT de dahil tüm üretken yapay zekâ teknolojileri (generative AI) siz ne kadar doğru sorular (prompt) sorarak yönlendirirseniz, tabiri yerinde ise anlayacağı dilden konuşabilirseniz o kadar başarılı sonuçlar üretiyor. Bu nedenle “Prompt Engineering” adında yeni bir meslek oluştu ve birçok şirket bu rol için yetkin uzman arıyor!
Microsoft’un Copilot’u yayınlaması ile ofis programlarında saatlerimizi hatta günlerimizi harcadığımız işler dakikalar hatta saniyeler mertebesinde yapay zekâ marifeti ile yapılabilecek. Bu sayede tasarruf edilen zamanları lütfen daha fazla toplantı yaparak heba etmeyelim…
Makronun son haline bu linkten erişebilirsiniz.
Yorum yazabilmek için oturum açmalısınız.