ການຊ່ວຍເຫຼືອ LibreOffice 26.2
ຫ້ອງສະໝຸດ ScriptForge ສາມາດໃຊ້ໄດ້ທັງໃນ Basic ແລະ Python. ບໍລິການ, ເມັດທອດ ແລະ ຄຸນສົມບັດສ່ວນໃຫຍ່ຈະເຮັດວຽກຄືກັນໃນທັງສອງພາສາການຂຽນໂປຣແກຣມ. ເຖິງຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກຄວາມແຕກຕ່າງໃນວິທີການເຮັດວຽກຂອງແຕ່ລະພາສາ, ຜູ້ໃຊ້ ScriptForge ຕ້ອງຮັບຮູ້ເຖິງລັກສະນະສະເພາະບາງຢ່າງຂອງຫ້ອງສະໝຸດເມື່ອໃຊ້ Python:
ຊື່ເມັດທອດ ແລະ ຄຸນສົມບັດ: ໃນ Python, ທຸກໆເມັດທອດ ແລະ ຄຸນສົມບັດສາມາດໃຊ້ໄດ້ທັງໃນຮູບແບບຕົວອັກສອນນ້ອຍທັງໝົດ (lowercased), ຕົວໃຫຍ່ສະເພາະໂຕທຳອິດ (ProperCased) ຫຼື ຮູບແບບອູດ (camelCased).
ອາກິວເມັນ: ທຸກໆອາກິວເມັນຄີເວີດ (keyword arguments) ທີ່ສົ່ງຕໍ່ໄປຍັງເມັດທອດແມ່ນເປັນຕົວອັກສອນນ້ອຍທັງໝົດ.
ວັນທີ: ທຸກໆວັດຖຸວັນທີຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນວັດຖຸ datetime.datetime ຂອງ Python ໂດຍກົງ.
ອາເຣ (Arrays): ອາເຣມິຕິດຽວຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນ tuples (ເຊິ່ງເປັນວັດຖຸທີ່ບໍ່ສາມາດປ່ຽນແປງຄ່າໄດ້). ອາເຣສອງມິຕິຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນ tuples ຂອງ tuples.
None: ຄີເວີດ None ຂອງ Python ແມ່ນທຽບເທົ່າກັບ Null, Empty ຫຼື Nothing ຂອງ Basic.
ວັດຖຸ UNO: ໂຄງສ້າງ UNO ທັງໝົດຈະຖືກແລກປ່ຽນລະຫວ່າງ Basic ແລະ Python ໂດຍບໍ່ມີການປ່ຽນແປງໃດໆ.
ການດີບັກ (Debugging): ທຸກຄັ້ງທີ່ເກີດຂໍ້ຜິດພາດໃນສະຄຣິບ Python ທີ່ໃຊ້ ScriptForge, ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດທີ່ໃຫ້ໂດຍ Python execution stack ຈະສະແດງແຖວຂອງໂຄດທີ່ເປັນຕົວກະຕຸ້ນໃຫ້ເກີດຂໍ້ຜິດພາດ. ໃນຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຂອງ Basic ຈະບໍ່ສະແດງຂໍ້ມູນນີ້.
ເຂົ້າເບິ່ງ ຊ່ວຍເຫຼືອສະຄຣິບ Python ຂອງ LibreOffice ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການຂຽນສະຄຣິບ Python ໂດຍໃຊ້ LibreOffice.
ຄຳແນະນຳການພິມ (typing hints) ຂອງ Python - ເຊິ່ງກ່ຽວຂ້ອງກັບເມັດທອດສາທາລະນະ ແລະ ຄຸນສົມບັດຂອງບໍລິການ ScriptForge - ສາມາດເອົາໄດ້ຈາກ IDEs ທີ່ຮອງຮັບສິ່ງອຳນວຍຄວາມສະດວກດັ່ງກ່າວ. ໃນທາງກາຍະພາບ, ຂະນະທີ່ພວມແກ້ໄຂສະຄຣິບຂອງຜູ້ໃຊ້:
ການວາງເມົາສ໌ໄວ້ເທິງອິນສະແຕນຊ໌ວັດຖຸ, ເມັດທອດ ຫຼື ຄຸນສົມບັດ ຈະສະແດງຄຳອະທິບາຍລະອຽດຂອງມັນ.
ການພິມ "." ຫຼັງຈາກອິນສະແຕນຊ໌ວັດຖຸ ຈະສະແດງກ່ອງລາຍການແບບເລື່ອນລົງທີ່ລະບຸອິນເຕີເຟສທັງໝົດທີ່ມີຢູ່.
ວົງເລັບຫຼັງຈາກຊື່ເມັດທອດ ຈະເລີ່ມການຕື່ມຂໍ້ມູນໂຄດໃຫ້ສົມບູນ (code-completion) ໂດຍການສະແດງອາກິວເມັນຂອງມັນ.
ຄຳແນະນຳການພິມຈະຖືກສະແດງເມື່ອມີການແກ້ໄຂເມັດທອດ ແລະ ຄຸນສົມບັດດ້ວຍຕົວອັກສອນແບບ propercase.
ຂຶ້ນກັບສິ່ງທີ່ທ່ານຕັ້ງໃຈຈະເຮັດ, ທ່ານອາດຈະເລືອກໜຶ່ງໃນວິທີການຕໍ່ໄປນີ້ເພື່ອລັນສະຄຣິບ Python ໃນ LibreOffice:
ລັນສະຄຣິບພາຍໃນໂປຣເຊສ (process) ຂອງ LibreOffice ປັດຈຸບັນ: ສະຄຣິບ Python ຈະຖືກປະຕິບັດງານຈາກພາຍໃນໂປຣເຊສຂອງ LibreOffice ໂດຍການໃຊ້ເມນູ ຫຼື ສ່ວນຂະຫຍາຍ APSO ເພື່ອເອີ້ນໃຊ້ສະຄຣິບຂອງຜູ້ໃຊ້ທີ່ເກັບໄວ້ໃນໂຟນເດີສະຄຣິບ Python. ນອກຈາກນັ້ນ ທ່ານຍັງສາມາດໃຊ້ APSO Python shell ເພື່ອລັນສະຄຣິບ Python ແບບໂຕ້ຕອບໄດ້ນຳອີກ.
Run Scripts separately from the LibreOffice process: Python scripts are executed from an external process that connects to an ongoing LibreOffice process using a socket.
ຖ້າທ່ານມີແຜນທີ່ຈະລັນສະຄຣິບຈາກພາຍໃນໂປຣເຊສຂອງ LibreOffice, ແນະນຳໃຫ້ຕິດຕັ້ງ ສ່ວນຂະຫຍາຍ APSO (Alternative Script Organizer for Python). ເຖິງຢ່າງໃດກໍຕາມ, ເພື່ອພັດທະນາສະຄຣິບ Python ຈາກພາຍນອກ LibreOffice, ທ່ານສາມາດເລືອກ Python IDE ທີ່ທ່ານຕ້ອງການໄດ້.
ວິທີທີ່ງ່າຍທີ່ສຸດໃນການເລີ່ມຕົ້ນການຂຽນສະຄຣິບ Python ໃນ LibreOffice ແມ່ນການຕິດຕັ້ງສ່ວນຂະຫຍາຍ APSO. ຫຼັງຈາກຕິດຕັ້ງແລ້ວ, ໃຫ້ເປີດຄອມໂພເນນໃດໜຶ່ງຂອງ LibreOffice ແລະ ໄປທີ່ .
ໃນໜ້າຕ່າງຫຼັກຂອງ APSO ໃຫ້ໄປທີ່ .
ອີກທາງເລືອກໜຶ່ງ ທ່ານສາມາດເປີດ APSO ໂດຍໃຊ້ຄີລັດເລີ່ມຕົ້ນ Alt + Shift + F11.
ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງ Python ແລະ shell ຈະພິມຜົນໄດ້ຮັບທີ່ກົງກັນອອກມາ ຫຼັງຈາກທີ່ແຕ່ລະແຖວຂອງໂຄດຖືກປະຕິບັດງານ.
ເພື່ອເລີ່ມຕົ້ນການໃຊ້ຫ້ອງສະໝຸດ ScriptForge, ທ່ານຈຳເປັນຕ້ອງນຳເຂົ້າເມັດທອດ CreateScriptService ເຊິ່ງທ່ານຈະສາມາດເຂົ້າເຖິງບໍລິການຕ່າງໆທີ່ໃຫ້ໂດຍຫ້ອງສະໝຸດ. ຕົວຢ່າງດ້ານລຸ່ມນີ້ໃຊ້ບໍລິການ Basic ເພື່ອສະແດງກ່ອງຂໍ້ຄວາມ (message box).
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
ເພື່ອລັນຕົວຢ່າງດ້ານເທິງ, ໃຫ້ປ້ອນແຕ່ລະແຖວລົງໃນ Python shell ເທື່ອລະແຖວ, ໂດຍການກົດປຸ່ມ Enter ຫຼັງຈາກທີ່ທ່ານພິມແຕ່ລະແຖວຂອງໂຄດສຳເລັດ.
ຕອນນີ້ທ່ານສາມາດເລີ່ມປະຕິບັດຄຳສັ່ງ Python ໂດຍໃຊ້ບໍລິການໃດໜຶ່ງຂອງ ScriptForge ໄດ້ແລ້ວ. ຕົວຢ່າງເຊັ່ນ: ສ່ວນຂອງໂຄດດ້ານລຸ່ມນີ້ໃຊ້ບໍລິການ UI ເພື່ອສ້າງເອກະສານ Writer ຫວ່າງເປົ່າ.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
ທ່ານສາມາດສ້າງໄຟລ໌ Python ຂອງຕົນເອງ ແລະ ແກ້ໄຂພວກມັນດ້ວຍຕົວແກ້ໄຂຂໍ້ຄວາມ (text editor) ທີ່ທ່ານຕ້ອງການ. ຫຼັງຈາກນັ້ນທ່ານສາມາດເອີ້ນໃຊ້ພວກມັນໄດ້ຈາກພາຍໃນຄອມໂພເນນໃດໜຶ່ງຂອງ LibreOffice.
ຂັ້ນຕອນທຳອິດແມ່ນການລະບຸຕຳແໜ່ງທີ່ເກັບສະຄຣິບຂອງຜູ້ໃຊ້ຂອງທ່ານ. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ອ້າງອີງເຖິງໜ້າຊ່ວຍເຫຼືອ ການຈັດລະບຽບ ແລະ ຕຳແໜ່ງຂອງສະຄຣິບ Python.
ຕອນນີ້ທ່ານສາມາດສ້າງໄຟລ໌ຂໍ້ຄວາມພາຍໃນໂຟນເດີສະຄຣິບ Python ຂອງຜູ້ໃຊ້ຂອງທ່ານ, ຕົວຢ່າງເຊັ່ນ sf_test.py, ແລະ ເລີ່ມພິມສະຄຣິບຂອງທ່ານ.
ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງງ່າຍໆທີ່ເອົາຄ່າຕົວເລກຈາກເຊວ (cell) ຂອງ Calc ແລະ ເພີ່ມຄ່າຂຶ້ນ 1. ພຽງແຕ່ພິມໂຄດຕໍ່ໄປນີ້ລົງໃນໄຟລ໌ sf_test.py.
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("A1")
value += 1
doc.SetValue("A1", value)
g_exportedScripts = (increment_cell, )
ຕົວຢ່າງນີ້ສ້າງຟັງຊັນ increment_cell. ໃຫ້ສັງເກດວ່າ g_exportedScripts ແມ່ນ tuple ທີ່ບອກວ່າຟັງຊັນໃດຈະຖືກສະແດງໃນ LibreOffice ເປັນສະຄຣິບຂອງຜູ້ໃຊ້.
ເພື່ອລັນສະຄຣິບນີ້ຈາກພາຍໃນເອກະສານ Calc:
ສ້າງ ຫຼື ເປີດໄຟລ໌ Calc.
ປ້ອນຄ່າຕົວເລກບາງຢ່າງລົງໃນເຊວ "A1" ໃນແຜ່ນງານປັດຈຸບັນ.
ໄປທີ່ .
ເລືອກ My Macros - sf_test ໃນຕົວເລືອກຫ້ອງສະໝຸດ. ຈາກນັ້ນເລືອກຟັງຊັນ increment_cell ພາຍໃຕ້ລາຍການ .
ຄລິກ Run. ສັງເກດເຫັນວ່າຄ່າໃນເຊວ "A1" ຖືກເພີ່ມຂຶ້ນ 1.
ທ່ານຍັງສາມາດໃຊ້ APSO ເພື່ອລັນສະຄຣິບ Python ໃນລັກສະນະດຽວກັນໄດ້ນຳອີກ:
ທຳອິດໃຫ້ເປີດ APSO ໂດຍການໄປທີ່ .
ໃນລາຍການມາໂຄຣ, ໃຫ້ເຂົ້າໄປທີ່ .
ຄລິກ .
ຂັ້ນຕອນທຳອິດໃນການລັນສະຄຣິບຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກແມ່ນການຊອກຫາໂຟນເດີທີ່ LibreOffice ຖືກຕິດຕັ້ງໄວ້. ມີຫຼາຍວິທີໃນການເຮັດແບບນັ້ນ, ແຕ່ ScriptForge ໃຫ້ວິທີທີ່ວ່ອງໄວໃນການລະບຸເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ເປີດ APSO's Python shell ແລະ ພິມ:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
ຜົນໄດ້ຮັບຈາກໂຄດດ້ານເທິງແມ່ນໄດເຣັກທໍຣີຫຼັກ (base directory) ທີ່ LibreOffice ຖືກຕິດຕັ້ງໄວ້. ຕອນນີ້ທ່ານຈຳເປັນຕ້ອງເພີ່ມໂຟນເດີຍ່ອຍ "program" ລົງໃນເສັ້ນທາງດັ່ງກ່າວ. ນີ້ແມ່ນໂຟນເດີຫຼັກທີ່ທ່ານຈະໃຊ້ລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ.
ຕົວຢ່າງເຊັ່ນ: ສົມມຸດວ່າທ່ານໄດ້ຮັບ /usr/lib/libreoffice/ ເປັນຜົນໄດ້ຮັບຈາກການລັນໂຄດ Python ດ້ານເທິງ. ຈາກນັ້ນທ່ານຈຳເປັນຕ້ອງຖືວ່າ /usr/lib/libreoffice/program ເປັນເສັ້ນທາງໃນການລັນສະຄຣິບ Python ຂອງທ່ານ.
ເພື່ອລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ, ທ່ານຈຳເປັນຕ້ອງເລີ່ມ LibreOffice ດ້ວຍຕົວເລືອກເພີ່ມເຕີມບາງຢ່າງທີ່ລະບຸ hostname ແລະ port ເຊິ່ງໂປຣເຊສພາຍນອກຈະໃຊ້ເພື່ອສື່ສານກັບໂປຣເຊສຄອມໂພເນນຂອງ LibreOffice.
Open the your operating system's command prompt, navigate to the program folder of your LibreOffice installation directory and type:
./soffice --accept='socket,host=localhost,port=2021;urp;'
The command above will start LibreOffice with a communication channel open so that other processes can exchange messages with it.
Note that the previous example opens LibreOffice start center. If you want to open a specific component, for instance Writer, you can add the --writer flag to the command, as follows.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
Take note of the host and port parameters, which in this example are localhost and 2021, respectively.
ເລີ່ມ Python shell ຈາກພາຍໃນໂຟນເດີ program ທີ່ຢູ່ໃນເສັ້ນທາງການຕິດຕັ້ງ LibreOffice ຂອງທ່ານ. ປະຕິບັດຕາມຂັ້ນຕອນ ດ້ານເທິງ ເພື່ອຮຽນຮູ່ວິທີການຊອກຫາເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ.
ໃນ Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
ໃນ Windows:
$ cd C:\Program Files\LibreOffice\program\
$ python.exe
This will open the Python shell and now you can start typing commands that will be executed by LibreOffice. But first you need to set up the socket connection.
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
ອ່ານພາກ ການຕັ້ງຄ່າ PYTHONPATH ດ້ານລຸ່ມນີ້ ໃນກໍລະນີທີ່ເກີດຂໍ້ຜິດພາດໃນການນຳເຂົ້າ scriptforge.py ຫຼື uno.py.
The second line of code above defines the host and port settings so that the Python shell can communicate with an ongoing LibreOffice process opened with the same socket settings.
ຕອນນີ້ທ່ານສາມາດລັນຄຳສັ່ງ Python ອື່ນໆ ແລະ ພວກມັນຈະສາມາດສື່ສານກັບຂະບວນການ LibreOffice ໄດ້. ຕົວຢ່າງ:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
ອີງຕາມການກຳນົດຄ່າລະບົບປະຕິບັດການຂອງທ່ານ ທ່ານຈະຕ້ອງຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມ PYTHONPATH ເພື່ອນຳເຂົ້າໄລບຣາຣີ scriptforge.py, ເຊິ່ງຈຳເປັນຕ້ອງມີການນຳເຂົ້າໄລບຣາຣີ uno.py ນຳ.
ໃຊ້ເຄື່ອງມືຄົ້ນຫາໄຟລ໌ຂອງລະບົບປະຕິບັດການຂອງທ່ານເພື່ອລະບຸໄດເຣັກທໍຣີທີ່ໄຟລ໌ທັງສອງນີ້ຕັ້ງຢູ່.
ຕົວຢ່າງ, ໃນການຕິດຕັ້ງ Ubuntu ແບບເລີ່ມຕົ້ນ ໄຟລ໌ທັງສອງອາດຈະຕັ້ງຢູ່ທີ່:
scriptforge.py: ຕັ້ງຢູ່ທີ່ /usr/lib/libreoffice/program
uno.py: ຕັ້ງຢູ່ທີ່ /usr/lib/python3/dist-packages
ໃນກໍລະນີນີ້, ໃຫ້ຕັ້ງຕົວແປສະພາບແວດລ້ອມ PYTHONPATH ດັ່ງຕໍ່ໄປນີ້ ກ່ອນທີ່ຈະເລີ່ມຕົວແປພາສາ Python:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
ຕຳແໜ່ງຂອງໄຟລ໌ເຫຼົ່ານີ້ຈະແຕກຕ່າງກັນໄປຕາມແຕ່ລະລະບົບປະຕິບັດການ ແລະ ວິທີການຕິດຕັ້ງ LibreOffice.