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.
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çin | Yol |
---|---|
User-specific path | ~/.config/libreoffice/4/user/Scripts/python |
All users | /usr/lib64/libreoffice/share/Scripts/python |
Windows için | Yol |
---|---|
User-specific path | C:\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 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 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.
References
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.