1. Ders : PyUNO kütüphanesi ile makro yazalım
Giriş
LibreOffice için Python kullanarak betik yazılabiliyor.
Bu derste Python ile ofis yazılımı için ilk betiği nasıl yazabileceğimizi anlatmaya çalışıyoruz.
Kurulum
Ubuntu tabanlı dağıtımlarda aşağıdaki paketi kurmak gerekebilir.
sudo apt install libreoffice-script-provider-python
İlk ayarlar
ArcoLinux dağıtımında uno.py kütüğünü aradık.
locate uno.py
Aşağıdaki gibi çıktı verdi.
/usr/lib/libreoffice/program/uno.py
/usr/lib/python3.12/site-packages/uno.py
Sonra bu kütüğe çalıştırma izni verdik.
sudo chmod +x /usr/lib/libreoffice/program/uno.py
Bu kütüğün bulunduğu dizini aşağıdaki gösterildiği gibi ortam değişkeni olarak ekliyoruz.
Ortam değişkeni
Eğer fish kabuğu kullanıyorsanız ~/.config/fish/config.fish kütüğüne, eğer bash kullanıyorsanız ~/.bashrc kütüğüne aşağıdaki ortam değişkenini ekleyiniz.
export PYTHONPATH="$PYTHONPATH:/usr/lib/libreoffice/program/"
Ekledikten sonra bilgisayarı tekrar başlatınız.
Çalışıyor mu?
Python makrolarının çalışıp çalışmadığını sınamak için LibreOffice yazılımında Araçlar -> Makrolar -> Makroları Yönet -> Python yolunu izleyiniz.
Buradan Uygulama Makroları -> HelloWorld -> HelloWordPython’u seçerek çalıştır tuşuna basınız.
Eğer yeni bir yazı kütüğü açıldı ve içine bir şeyler yazıldı ise Python çalışıyor demektir.
Makroları nereye kaydedeceğiz?
Linux altında dizin
/home/KULLANICI/.config/libreoffice/4/user/Scripts/python
Windows için
%APPDATA%\LibreOffice\4\user\Scripts\python
macOS için
~/Library/Application Support/LibreOffice/4/user/Scripts/python/
şeklindedir.
Linux için KULLANICI yerine kendi kullanıcı isminiz gelecek.
Eğer Scripts/python dizini yoksa oluşturunuz.
Selam verme
Belirtilen dizinde selam.py ismi ile bir kütük oluşturup içine aşağıdaki bilgileri giriniz.
import uno
def selamVer():
belge = XSCRIPTCONTEXT.getDocument()
hücre = belge.Sheets[0]['A1']
hücre.setString("Selâmun Aleyküm")
return
Makroyu çalıştıralım
Makroyu çalıştırmak için Araçlar->Makrolar->Makro Çalıştır yolunu izleyiniz.
Makrolarım isimli kütüphaneden selam ve selamVeri seçip sonra da Çalıştır düğmesine basınız.
Makro çalıştığında A1 hücresine Selâmun Aleyküm yazması gerekiyor.
2. Ders : Basic dilinden Python’u çağıralım
Giriş
Bir önceki Python makro derslerine devam ediyoruz.
Bu derste Basic içinden Python’u nasıl çağırabileceğimizi öğrenmeye çalışacağız.
Python kütüğünü oluşturalım
Hatırlayabileceğiniz üzere python kütüklerin /home/KULLANICI/.config/libreoffice/4/user/Scripts/python dizininde oluşturuyorduk.
Burada tarih.py isimli bir kütük oluşturup içine aşağıdaki bilgileri girelim.
from datetime import datetime
def tarih():
return datetime.utcnow().strftime("%-d %B %A")
g_exportedScripts = (tarih,)
Basic içinden Python’u çağıralım
Bunun için LibreOffice yazılımını açınız.
Araçlar->Makrolar->Makroları Yönet->Basic yolunu takip ediniz. Burada Makrolarım -> Standard -> Module1 seçili iken Düzenle tuşuna basınız.
Gelen düzenleyiciye aşağıdaki kodu giriniz.
REM ***** BASIC *****
Function Gunlerden
hizmetSaglayici= ThisComponent.getScriptProvider()
betik = hizmetSaglayici.getScript("vnd.sun.star.script:tarih.py$tarih?language=Python&location=user")
Gunlerden = betik.invoke(array(), array(), array())
End Function
Dosya bölümünden Kaydet seçeneği ile makroyu kaydediniz.
Tarih işlevini sınayalım
Tekrar hesap tablosuna dönünüz.
Burada herhangi bir hücreye =GUNLERDEN() işlevini girerseniz tarihin uzun olarak yazıldığını görebilirsiniz.
Örneğin bu gün 14 Mayıs Salı yazıldı.
Kaynak :


