Yunus Emre
Software Engineer
PowerApps ile Dinamik Word ve Excel Oluşturma
PowerApps kullanarak dinamik dokümanlar oluşturmak, iş süreçlerinizi otomatikleştirerek hem zaman kazandırır hem de verimliliğinizi artırır. Bu yazıda, SharePoint, Power Automate ve PowerApps’in gücünden yararlanarak Word ve Excel belgelerini kolayca nasıl oluşturabileceğinizi adım adım anlatıyorum.
Dinamik Word ve Excel Oluşturma
Daha önceki yazılarımda flutter ile excel oluşturma işleminden bahsetmiştim. Şimdi benzer bir işlemi powerapps ile kolay bir şekilde nasıl yapabileceğimize değineceğim.
Öncelikle yazı içeriğinde çok fazla powerapps başlangıç kısmına girmeyeceğim. Powerapps tarafında tasarımı ve formları oluşturduğunuzu varsayarak devam ediyorum.
PowerApps ile Dinamik Word Belgesi Nasıl Oluşturulur?
İlk önce word ile başlayalım. Powerapps’de dinamik bir word belgesi oluşturmak için sharepointte bir belge kitaplığı açmamız gerekiyor. Bu belge kitaplığındaki sütunları olduğu gibi word belgesi içerisine alabiliyoruz. Bu sebeple powerapps’de kullanıcıdan aldığımız verileri sharepoint belge kitaplığındaki sütunlara attığımızda süreç neredeyse tamamlanmış oluyor. Peki powerapps’den belge kitaplığına nasıl veri yazabiliriz;
Bunun için öncelikle açtığımız belge kitaplığında, şablon olarak kullanmak için bir word belgesi oluşturalım. Daha sonrasında bu belge içerisine atmak için bazı sütunlar oluşturalım. Alt yapımız hemen hemen hazır. Şimdi Powerapps tarafında aldığımız verileri Automate’e atacağız ve oradan da açmış olduğumuz belge kitaplığındaki sütunlara veri yazacağız. Bunun için Powerapps’de verilerimi JSON haline getiriyorum.
/*
Powerapps json oluşturarak akışa bu json verimizi gönderiyoruz ve dönüş olarak bir link alıyoruz. Daha sonra Launch komutu ile bu linki açıyoruz.
*/
Set(
jsonData,
JSON(
{
Name: Txt_Name.Value,
Lastname: Txt_Lastname.Value,
City: Txt_City.Value,
AktifMi: Cb_AktifMi.Checked
}
)
);
Set(
wordLink,
'Dinamik-Word'.Run(jsonData).url
);
Launch(wordLink)
Bu kod uygulama içerisindeki verileri JSON haline getirdi ve “Dinamik Word” isimli akışa bu JSON’ı gönderdi. Akıştan dönen bir metni de “wordLink” isimli değişkene kayıt etti. Daha sonrasında da “Launch” komutu ile bu linkin açılmasını sağladı.
Şimdi akış kısmına geçelim. Akışta ilk olarak Powerapps tarafından gelecek olan JSON verisini alıyoruz. Burada tek tek veri de alabiliriz ancak veri sayısı arttığında sorun olabiliyor. Bu sebeple ben genel olarak JSON ile çalışıyorum. Daha sonra gelen JSON dosyasını ayrıştırarak verilerime ulaşıyorum. Daha sonrasında belge kitaplığında daha önce oluşturduğum şablon word belgesini kopyalıyorum. Bir sonraki aşamada bu kopyaladığım belge ile yeni veri oluşturuyorum. Daha sonrasında oluşturan yeni verinin sütunlarına da parametre olarak gelen JSON verilerimi kayıt ediyorum. Bu sayede sharepoint belge kitaplığında bir veri oluşturmuş olduk.
Sharepoint kitaplığındaki sütunları word belgesine yazmak için de şablon olarak eklediğimiz word belgesini açıyoruz. Üstteki ekle kısmından Hızlı Bölümler içerisinden Belge Özelliği alanına tıklıyoruz. Burada sharepointte açtığımız sütunları görebiliriz. İstediğiniz sütunu word belgesinin istediğiniz alanına ekleyebilirsiniz.
PowerApps ile Dinamik Excel Nasıl Oluşturulur?
Dinamik bir excel oluşturmak biraz daha karışık. Ancak daha çok imkana sahipsiniz. Word belgesinde PowerApps – Power Automate – Word ilerleyişinizi izledik. Ancak excel aşamasında PowerApps – Power Automate – Excel Betik – Excel şeklinde bir ilerleme sağlayacağız. Excel betik excel için yazılan özel kodlardır. Ben bunu bana daha çok özgürlük sağladığı için Word’e nazaran daha çok seviyorum. Hemen hemen istediğim her şeyi burada çok kolay bir şekilde yapabiliyorum.
- Powerapps kısmında yine verilerimiz ile bir JSON oluşturalım.
- JSON verisini Power Automate’e gönderelim.
- Sharepoint belge kitaplığında bir excel şablon oluşturalım.
- Automate akışımızda da bu şablonu kopyalayıp yeni excel oluşturalım.
- Daha sonra Automate’de betik çalıştır işlemini seçelim.
- Bu aşamada şablon Excelimizi açıp bir Excel betik yazmalıyız. (Otomatikleştir->Yeni Betik) Yazdığımız excel betiğini kayıt ettiğimizde Betik çalıştırın alanındaki Betik sekmesinde görünür hale gelecektir. Örnek excel betiği aşağıdadır.
interface KisiJson {
Name: string;
Lastname: string;
City: string;
AktifMi: boolean
}
// Ana fonksiyon
function main(workbook: ExcelScript.Workbook, jsonData: string) {
// JSON stringini parse et
let kisiJson: KisiJson = JSON.parse(jsonData);
// Çalışma sayfasını seç
let selectedSheet = workbook.getWorksheet("Sayfa1");
// Verileri hücrelere yerleştir
selectedSheet.getRange("C9").setValue(kisiJson.Name);
selectedSheet.getRange("C10").setValue(kisiJson.Lastname);
selectedSheet.getRange("D9").setValue(kisiJson.City);
if(kisiJson.AktifMi === true)
{
selectedSheet.getRange("E9").setValue("✅");
}
else
{
selectedSheet.getRange("E9").setValue("❌");
}
}
- Automate tarafında oluşturduğumuz betiği seçtiğimizde parametreler bizden istenecek. Burada JSON ayrıştırma işlemini automate tarafında yapabiliriz ancak benim önerim excel betik tarafında yapmak. Çünkü bazı işlemlerde betiğin çok daha hızlı çalıştığını fark ettim.
- Automate’e Powerapps’den gelen JSON verisini bu sefer betiğe gönderiyorum.
- Betik kodum bu JSON’ı alarak hücrelere işleyecek.
- Akışta betik işleminden sonra tekrar bir paylaşım bağlantısı oluşturuyorum ve powerapps’e geri dönüş yapıyorum.
Tüm bu işlemler çok kısa sürede tamamlanıp kullanıcı dinamik dokümanı açabiliyor. Şu an örnek olması amacı ile sadece 3-4 veri kullandım. Kapsamlı projelerde veri sayısı çok fazla artabiliyor. Kimi zaman JSON içerisinde bir array tanımlayarak da dinamik exceller oluşturabiliyoruz. Bu durumlarda dahi, betik hızlı bir şekilde tamamlanarak kullanıcıyı çok bekletmeden dokümanı doldurabiliyor.
Not: Excel betiklerini kullanarak bir hücrenin yüksekliği, yazı tipini, rengini değiştirebilirsiniz. Yeni satırlar ekleyebilir ve bu sayede tamamen dinamik dokümanlar oluşturabilirsiniz. Bu sebeple bazı durumlar haricinde mümkün oldukça excel kullanıyorum.
Microsoft power platformunu kullanarak dinamik word ve excel oluşturma işlemini gerçekleştirdik. Bu işlemler farklı şekillerde de yapılabilir. Sizde kullandığınız yöntemleri aşağıdan yorum olarak yazabilirsiniz.
Bir sonraki yazıda görüşmek üzere…