LibreOffice

LibreOffice’de İlk Python Makronuzu Yazın


Bu makale, Python için LibreOffice makrosunun nasıl kurulacağını açıklar ve ilk Python makronuzu LibreOffice Calc ve Writer’da yazmanıza yardımcı olur.

Basic’te LibreOffice’de makro yazmak, başından beri desteklendiğinden daha kolaydır çünkü Basic daha eski bir programlama dilidir. Ancak LibreOffice’de Python makrolarını ayarlamak biraz zordur. Bu eğitimde sisteminizi Python makrosu için nasıl ayarlayacağınızı ve örnek bir program çalıştıracağınızı öğrenebilirsiniz.

1. Giriş ve sistem kurulumu

LibreOffice API’sine erişmek için PyUNO bileşenini kullanmanız gerekir. PyUNO paketi LibreOffice çalışma alanına, belgelerine, nesnelerine ve tüm açık dosya ve bileşenlere erişmenizi sağlar. Bir Python betiğini çalıştırdığınızda, PyUNO çalışma zamanını kullanarak LibreOffice işlemini çağırır.

LibreOffice’in Ubuntu, Linux Mint, Fedora ve diğer dağıtımlardaki varsayılan kurulumu Python ile çalışmalıdır çünkü Python Linux sistemlerinde varsayılan olarak kuruludur.

Ancak, Araçlar > Makrolar > Makroları Organize Et menüsünde Python seçeneği kullanılamıyorsa (Aşağıdaki resme bakın), ardından Ubuntu ve ilgili dağıtımlardaki terminalden aşağıdaki komutu çalıştırın. Tamamlandığında sisteminizi yeniden başlatın.

Python option is not available in LibreOffice
LibreOffice’te Python seçeneği mevcut değil

Fedora Linux bu paketi gerektirmiyor.
sudo apt install libreoffice-script-provider-python

Yeniden başlattıktan sonra Python seçeneğinin mevcut olup olmadığını doğrulayın.

Windows kullanıcılarının Python’u sistemlerine ve LibreOffice’e de yüklemeleri gerekiyor. İhtiyaç halinde aşağıdaki kılavuzlara başvurabilirsiniz.

2. LibreOffice’de Python Kodlama Ortamı

LibreOffice, Temel programlama dili için yerleşik bir makro düzenleyiciyle birlikte gelir. Ancak Python için bu işe yaramıyor. Bu nedenle Python kodunu ayrı bir düzenleyicide yazmanız gerekir. Yeni başlayan biriyseniz, çoğu iş için harika çalışan basit editör Thonny’yi kullanmanızı öneririm. Ayrıca buradan dilediğiniz Python editörünü seçebilirsiniz.

Thonny’yi veya herhangi bir Python düzenleyiciyi yükledikten sonra bir sonraki adıma geçin.

3. Python makro dosyalarının konumu ve kullanıcı profili

LibreOffice’in makro dosyalarını (örn. .py dosyaları) aldığı iki yer vardır. Bunlardan biri, tüm kullanıcılar için ortak olan sistem konumu içindir. Diğeri ise kullanıcıya özel konumdur ve dosyalara yalnızca o kullanıcı erişebilir.

Linux içinYol
User-specific path~/.config/libreoffice/4/user/Scripts/python
All users/usr/lib64/libreoffice/share/Scripts/python
Windows içinYol
User-specific pathC:\Users\<user>\AppData\Roaming\LibreOffice\4\user\Scripts\python
All users%APPDATA%\LibreOffice\4\user\Scripts\python

İlk kez kurulum yapıyorsanız, “kullanıcıya özel” konumlar için “Scripts” ve “python” klasörleri mevcut olmayabilir. Değilse, bunları oluşturun.

4. İlk Python Makronuzu Yazmak

Öncelikle LibreOffice Calc için Python’da bir makro oluşturacağım. Makro, LibreOffice Calc çalışma kitabının ilk Sayfasının ilk A1 hücresine basit bir “merhaba dünya” metni eklemelidir.

Thonny düzenleyicisinde bir dosya oluşturun ve onu “HelloWorldCalc.py” olarak ~/.config/libreoffice/4/user/Scripts/python (Linux için) ve C:\Users\<user>\AppData\Roaming\ dizinine kaydedin. Windows için LibreOffice\4\user\Scripts\python.

İlk satırda uno kütüphanesini içe aktarmanız gerekiyor. Bunu şu şekilde yapabilirsiniz: import uno

Daha önceki örneklerde LibreOffice’de currentDocument kavramını veya Basic makroda StartOffice nesne modelini anlatmıştık. Benzer şekilde Python için, LibreOffice Calc çalışma kitabının (veya Writer belgesinin) çalışan örneğinin bir nesnesini almak için aşağıdaki ifadeyi kullanmanız gerekir. İfadeleri bir fonksiyonun içine eklediğinizden emin olun. oDoc = XSCRIPCONTEXT.getDocument()

SCRIPTCONTEXT, uno paketinin bir parçası olarak yüklenen pythonscript.py’nin ‘pythonscript.ScriptContext’ sınıfının bir nesnesidir.

Alternatif olarak, geçerli çalışan belgeyle aynı tanıtıcıyı elde etmek için aşağıdakileri yazabilirsiniz:

ctx = uno.getComponentContext()
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext(“com.sun.star.frame.Desktop”, ctx)
oDoc = desktop.getCurrentComponent()

Belge nesnesi hazır olduğunda çalışma kitabı sayfalarına erişebilirsiniz. Sayfa1 0 konumundan başlar ve bu şekilde devam eder. İlk sayfayı elde etmek için, belge nesnesinin getSheets() yöntemiyle ilk sayfayı veren aşağıdakini yazabilirsiniz:

oSheet =oDoc.getSheets().getByIndex(0)

And to access a cell, you can use the getCellByPosition(col, row) method of the oSheet object. So, to access cell A1 (i.e. col=1, row=1), you can write the following: oCell = oSheet.getCellByPosition(0,0)

Son olarak ilk hücreye değer katmak için aşağıdakileri kullanabilirsiniz. oCell.String = ‘Python aracılığıyla Merhaba Dünya’

5. Kodu Tamamlayın

Hepsini bir araya getirirsek kodun tamamı bu şekilde olabilir. Çalıştırmadan önce dosyayı kaydettiğinizden emin olun. # LibreOffice Calc için HelloWorld python betiği #

# Bu dosya, LibreOffice’deki Python Makroları için DebugPoint.com eğitim serisinin bir parçasıdır # #

import uno

def HelloWorldPythonCalc():

oDoc = XSCRIPTCONTEXT.getDocument()

oSheet =oDoc.getSheets().getByIndex (0)

oCell = oSheet.getCellByPosition(0,0)

oCell.String = ‘Python aracılığıyla Merhaba Dünya’

return None

5. Makroyu Çalıştırma

Yukarıdaki makroyu çalıştırmak için, onu LibreOffice ana iletişim kutusu (Calc veya Writer veya diğerleri) aracılığıyla tetiklemeniz gerekir. Thonny Python düzenleyicisi aracılığıyla çalıştırmayı denerseniz çalışabilir ancak XSCRIPTCONTEXT nesnesi Thonny sürecinden çalışan LibreOffice örneğini göremediği için çıktıyı göremezsiniz.

Makroyu çalıştırmak için Araçlar > Makroları Organize Et > Python’a tıklayın.

Python option in menu
Menüdeki Python seçeneği

Python Makroları penceresinde Makrolarım bölümünü genişletin. Python dosya adını ve işlev adının listelendiğini görmelisiniz.

Select and run the python macro in LibreOffice
LibreOffice’de python makrosunu seçin ve çalıştırın

Select the function name and hit Run to execute.

Not: Python makro dosyanızı göremiyorsanız, onu yukarıda belirtildiği gibi doğru yola koyduğunuzdan emin olun. Ayrıca Çalıştır devre dışıysa (gri renkteyse), Python makronuzda bazı sözdizimi hataları vardır. Yani editöre geri dönün ve çalıştırın. Python editörü mevcut herhangi bir sözdizimi hatası hakkında size bilgi verecektir.

Yukarıdaki örnek programın demo ekran görüntüsünü burada bulabilirsiniz.

A sample Python macro running in LibreOffice
LibreOffice’de çalışan örnek bir Python makrosu

References

Yazının orijinalini buradan okuyabilirsiniz.