ການລັນສະຄຣິບ Python

ເນື້ອໃນ

# ການລັນສະຄຣິບ Python ຂອງ LibreOffice

ອີງຕາມສິ່ງທີ່ທ່ານຕ້ອງການບັນລຸ, ທ່ານສາມາດເລືອກໜຶ່ງໃນວິທີການລັນສະຄຣິບ Python ໃນ LibreOffice ດັ່ງຕໍ່ໄປນີ້:

- ລັນສະຄຣິບພາຍໃນໂປຣເຊສ LibreOffice ປັດຈຸບັນ: ສະຄຣິບ Python ຈະຖືກປະຕິບັດຈາກພາຍໃນໂປຣເຊສ LibreOffice ໂດຍການໃຊ້ເມນູ ເຄື່ອງມື - ມາໂຄຣ - ລັນມາໂຄຣ ຫຼື ສ່ວນຂະຫຍາຍ APSO ເພື່ອເອີ້ນໃຊ້ສະຄຣິບຂອງຜູ້ໃຊ້ທີ່ເກັບໄວ້ໃນໂຟນເດີສະຄຣິບ Python. ທ່ານຍັງສາມາດໃຊ້ APSO Python shell ເພື່ອລັນສະຄຣິບ Python ແບບໂຕ້ຕອບໄດ້.

- ລັນສະຄຣິບແຍກຈາກໂປຣເຊສ LibreOffice: ສະຄຣິບ Python ຈະຖືກປະຕິບັດຈາກໂປຣເຊສພາຍນອກທີ່ເຊື່ອມຕໍ່ກັບໂປຣເຊສ LibreOffice ທີ່ກຳລັງເຮັດວຽກຢູ່ໂດຍການໃຊ້ pipe ຫຼື socket.

ຖ້າທ່ານວາງແຜນທີ່ຈະລັນສະຄຣິບຈາກພາຍໃນໂປຣເຊສ LibreOffice, ຂໍແນະນຳໃຫ້ຕິດຕັ້ງ ສ່ວນຂະຫຍາຍ APSO (Alternative Script Organizer for Python). ແນວໃດກໍຕາມ, ເພື່ອພັດທະນາສະຄຣິບ Python ຈາກພາຍນອກ LibreOffice, ທ່ານສາມາດເລືອກ IDE ຂອງ Python ທີ່ທ່ານຕ້ອງການໄດ້.

## ການລັນສະຄຣິບຈາກພາຍໃນໂປຣເຊສ LibreOffice

### ການໃຊ້ສ່ວນຂະຫຍາຍ APSO

ວິທີທີ່ງ່າຍທີ່ສຸດໃນການເລີ່ມຕົ້ນຂຽນສະຄຣິບ Python ໃນ LibreOffice ແມ່ນການຕິດຕັ້ງສ່ວນຂະຫຍາຍ APSO. ຫຼັງຈາກຕິດຕັ້ງແລ້ວ, ໃຫ້ເປີດສ່ວນປະກອບໃດໜຶ່ງຂອງ LibreOffice ແລະໄປທີ່ ເຄື່ອງມື - ມາໂຄຣ - ຈັດການສະຄຣິບ Python.

ໃນໜ້າຕ່າງຫຼັກຂອງ APSO ໃຫ້ໄປທີ່ ເມນູ - Python Shell.

ຫຼືທ່ານສາມາດເປີດ APSO ໂດຍໃຊ້ປຸ່ມລັດເລີ່ມຕົ້ນ Alt + Shift + F11.

ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງ Python ແລະ shell ຈະສະແດງຜົນໄດ້ຮັບທີ່ກ່ຽວຂ້ອງຫຼັງຈາກແຕ່ລະແຖວຂອງລະຫັດຖືກປະຕິບັດ.

ເພື່ອເລີ່ມຕົ້ນການນຳໃຊ້ໄລບຣາຣີ ScriptForge, ທ່ານຈຳເປັນຕ້ອງນຳເຂົ້າ (import) ວິທີການ CreateScriptService, ເຊິ່ງທ່ານຈະສາມາດເຂົ້າເຖິງການບໍລິການຕ່າງໆທີ່ສະໜອງໃຫ້ໂດຍໄລບຣາຣີ. ຕົວຢ່າງຂ້າງລຸ່ມນີ້ແມ່ນການໃຊ້ບໍລິການ Basic ເພື່ອສະແດງກ່ອງຂໍ້ຄວາມ.

            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

ທ່ານສາມາດສ້າງໄຟລ໌ Python ຂອງທ່ານເອງ ແລະ ແກ້ໄຂພວກມັນດ້ວຍໂປຣແກຣມແກ້ໄຂຂໍ້ຄວາມ (text editor) ທີ່ທ່ານຕ້ອງການ. ຈາກນັ້ນທ່ານສາມາດເອີ້ນໃຊ້ພວກມັນໄດ້ຈາກພາຍໃນສ່ວນປະກອບໃດໜຶ່ງຂອງ LibreOffice.

ຂັ້ນຕອນທຳອິດແມ່ນການຊອກຫາບ່ອນເກັບສະຄຣິບຂອງຜູ້ໃຊ້. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ເບິ່ງທີ່ໜ້າຊ່ວຍເຫຼືອ ການຈັດລະບຽບ ແລະ ສະຖານທີ່ຂອງສະຄຣິບ Python.

ຕອນນີ້ທ່ານສາມາດສ້າງໄຟລ໌ຂໍ້ຄວາມພາຍໃນໂຟນເດີສະຄຣິບ Python ຂອງຜູ້ໃຊ້, ຕົວຢ່າງ my_script.py, ແລະ ເລີ່ມພິມສະຄຣິບຂອງທ່ານ.

ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງງ່າຍໆໃນການດຶງຄ່າຕົວເລກຈາກຫ້ອງ (cell) ຂອງ Calc ແລະ ເພີ່ມຄ່າມັນຂຶ້ນ 1. ພຽງແຕ່ພິມລະຫັດຕໍ່ໄປນີ້ລົງໃນໄຟລ໌ my_script.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:

1. ສ້າງ ຫຼື ເປີດໄຟລ໌ Calc.

2. ປ້ອນຄ່າຕົວເລກບາງຢ່າງລົງໃນຫ້ອງ "A1" ໃນຊີດປັດຈຸບັນ.

3. ໄປທີ່ ເຄື່ອງມື - ມາໂຄຣ - ລັນມາໂຄຣ .

4. ເລືອກ ມາໂຄຣຂອງຂ້ອຍ - my_script ໃນບ່ອນເລືອກໄລບຣາຣີ. ຈາກນັ້ນເລືອກຟັງຊັນ increment_cell ພາຍໃຕ້ລາຍຊື່ ຊື່ມາໂຄຣ.

5. ຄລິກ ລັນ. ສັງເກດວ່າຄ່າໃນຫ້ອງ "A1" ໄດ້ຖືກເພີ່ມຂຶ້ນ 1.

ທ່ານຍັງສາມາດໃຊ້ APSO ເພື່ອລັນສະຄຣິບ Python ໃນລັກສະນະດຽວກັນ:

1. ທຳອິດໃຫ້ເປີດ APSO ໂດຍໄປທີ່ ເຄື່ອງມື - ມາໂຄຣ - ຈັດການສະຄຣິບ Python.

2. ໃນລາຍຊື່ມາໂຄຣ, ໄປທີ່ ມາໂຄຣຂອງຂ້ອຍ - my_script - increment_cell.

3. ຄລິກ ປະຕິບັດການ (Execute).

## ການລັນສະຄຣິບແຍກຈາກໂປຣເຊສ LibreOffice

### ການກຳນົດເສັ້ນທາງການຕິດຕັ້ງ (Installation Path)

ຂັ້ນຕອນທຳອິດໃນການລັນສະຄຣິບຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກແມ່ນການຊອກຫາໂຟນເດີທີ່ LibreOffice ຖືກຕິດຕັ້ງ. ມີຫຼາຍວິທີທີ່ຈະເຮັດແນວນັ້ນ, ແຕ່ ScriptForge ໃຫ້ວິທີທີ່ໄວໃນການລະບຸເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ເປີດ Python shell ຂອງ APSO ແລະ ພິມ:

          from scriptforge import CreateScriptService
          fs = CreateScriptService("FileSystem")
          fs.FileNaming = "SYS"
          inst_dir = fs.InstallFolder
          print(inst_dir)

ຜົນໄດ້ຮັບຈາກລະຫັດຂ້າງເທິງແມ່ນໄດເຣັກທໍຣີພື້ນຖານທີ່ LibreOffice ຖືກຕິດຕັ້ງ. ຕອນນີ້ທ່ານຈຳເປັນຕ້ອງເພີ່ມໂຟນເດີຍ່ອຍ "program" ເຂົ້າໃນເສັ້ນທາງທີ່ໄດ້ຮັບ. ນີ້ແມ່ນໂຟນເດີພື້ນຖານທີ່ທ່ານຈະໃຊ້ລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ.

ຕົວຢ່າງ, ສົມມຸດວ່າທ່ານໄດ້ຮັບ /usr/lib/libreoffice/ ເປັນຜົນໄດ້ຮັບຈາກການລັນລະຫັດ Python ຂ້າງເທິງ. ຈາກນັ້ນທ່ານຕ້ອງຖືວ່າ /usr/lib/libreoffice/program ເປັນເສັ້ນທາງໃນການລັນສະຄຣິບ Python ຂອງທ່ານ.

### ເລີ່ມ LibreOffice ດ້ວຍການຕັ້ງຄ່າ pipe ຫຼື socket

ເພື່ອລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ, ທ່ານຈຳເປັນຕ້ອງເລີ່ມ LibreOffice ດ້ວຍຕົວເລືອກເພີ່ມເຕີມບາງຢ່າງທີ່ລະບຸຊື່ pipe ຫຼື ຊື່ໂຮສ (hostname) ແລະ ພອດ (port) ທີ່ໂປຣເຊສພາຍນອກຈະໃຊ້ສື່ສານກັບໂປຣເຊສສ່ວນປະກອບຂອງ LibreOffice.

ເປີດໜ້າຕ່າງຄຳສັ່ງ (command prompt) ຂອງລະບົບປະຕິບັດການຂອງທ່ານ, ໄປທີ່ໂຟນເດີ program ຂອງໄດເຣັກທໍຣີການຕິດຕັ້ງ LibreOffice ຂອງທ່ານ ແລະ ພິມຢ່າງໃດຢ່າງໜຶ່ງຕໍ່ໄປນີ້:

On Linux or macOS:

libreoffice --accept='pipe,name=aPipeName;urp;'

ໃນ Windows:

soffice.exe --accept='socket,host=localhost,port=2021;urp;'

as a Flatpak:

flatpak run org.libreOffice.LibreOffice accept='socket,host=localhost,port=2021;urp;'

ຄຳສັ່ງໃດໜຶ່ງຂ້າງເທິງຈະເລີ່ມ LibreOffice ພ້ອມກັບເປີດຊ່ອງທາງການສື່ສານເພື່ອໃຫ້ໂປຣເຊສອື່ນໆສາມາດແລກປ່ຽນຂໍ້ຄວາມກັບມັນໄດ້.

ໝາຍເຫດວ່າຕົວຢ່າງກ່ອນໜ້ານີ້ຈະເປີດໜ້າຫຼັກ (start center) ຂອງ LibreOffice. ຖ້າທ່ານຕ້ອງການເປີດສ່ວນປະກອບສະເພາະ, ຕົວຢ່າງ Writer, ທ່ານສາມາດເພີ່ມແຟລັກ (flag) --writer ເຂົ້າໃນຄຳສັ່ງ ດັ່ງຕໍ່ໄປນີ້.

./soffice --writer --accept='socket,host=localhost,port=2021;urp;'

ໃຫ້ຈົດຈຳພາຣາມິເຕີ name, ຫຼື host ແລະ port, ເຊິ່ງໃນຕົວຢ່າງນີ້ແມ່ນ aPipeName, ຫຼື localhost ແລະ 2021 ຕາມລຳດັບ.

### ການລັນ Python Shell ພາຍນອກ

ເລີ່ມ Python shell ຈາກພາຍໃນໂຟນເດີ program ຢູ່ໃນເສັ້ນທາງການຕິດຕັ້ງ LibreOffice ຂອງທ່ານ. ປະຕິບັດຕາມຂັ້ນຕອນ ຂ້າງເທິງ ເພື່ອຮຽນຮູ່ວິທີຊອກຫາເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ.

On Linux or macOS:

$ cd /usr/lib/libreoffice/program

$ python

ໃນ Windows:

$ cd C:\\Program Files\\LibreOffice\\program\

$ python.exe

ສິ່ງນີ້ຈະເປີດ Python shell ແລະ ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງທີ່ຈະຖືກປະຕິບັດໂດຍ LibreOffice. ແຕ່ກ່ອນອື່ນ ທ່ານຈຳເປັນຕ້ອງຕັ້ງຄ່າການເຊື່ອມຕໍ່ pipe ຫຼື socket. ຄຳສັ່ງ ScriptForge() ຂ້າງລຸ່ມນີ້ຕ້ອງມາກ່ອນການເອີ້ນໃຊ້ CreateScriptService() ຄັ້ງທຳອິດ.

ລັນຢ່າງໃດຢ່າງໜຶ່ງ:

       from scriptforge import ScriptForge, CreateScriptService
       ScriptForge(pipe='aPipeName')

        from scriptforge import ScriptForge, CreateScriptService
        ScriptForge(hostname='localhost', port=2021)

ອ່ານພາກສ່ວນ ການຕັ້ງຄ່າ PYTHONPATH ຂ້າງລຸ່ມນີ້ ໃນກໍລະນີທີ່ເກີດຂໍ້ຜິດພາດໃນການນຳເຂົ້າ scriptforge.py ຫຼື uno.py.

ແຖວທີສອງຂອງລະຫັດຂ້າງເທິງຈະກຳນົດການຕັ້ງຄ່າ pipe ຫຼື host ແລະ port ເພື່ອໃຫ້ Python shell ສາມາດສື່ສານກັບໂປຣເຊສ LibreOffice ທີ່ກຳລັງເຮັດວຽກຢູ່ ເຊິ່ງຖືກເປີດດ້ວຍການຕັ້ງຄ່າ pipe ຫຼື socket ດຽວກັນ.

ຕອນນີ້ທ່ານສາມາດລັນຄຳສັ່ງ Python ອື່ນໆ ແລະ ພວກມັນຈະສາມາດສື່ສານກັບໂປຣເຊສ LibreOffice ໄດ້. ຕົວຢ່າງ:

        ui = CreateScriptService("UI")
        bas = CreateScriptService("Basic")
        doc = ui.OpenDocument("~/Documents/myFile.ods")
        bas.MsgBox(doc.DocumentType)

### ການຕັ້ງຄ່າ PYTHONPATH

ອີງຕາມການຕັ້ງຄ່າຂອງລະບົບປະຕິບັດການຂອງທ່ານ, ທ່ານອາດຈະຈຳເປັນຕ້ອງຕັ້ງຄ່າຕົວປ່ຽນສະພາບແວດລ້ອມ (environment variable) PYTHONPATH ເພື່ອນຳເຂົ້າໄລບຣາຣີ scriptforge.py, ເຊິ່ງຈຳເປັນຕ້ອງມີການນຳເຂົ້າໄລບຣາຣີ uno.py ນຳອີກ.

ໃຊ້ເຄື່ອງມືຄົ້ນຫາໄຟລ໌ຂອງລະບົບປະຕິບັດການຂອງທ່ານເພື່ອລະບຸໄດເຣັກທໍຣີທີ່ໄຟລ໌ທັງສອງນີ້ຕັ້ງຢູ່.

ຕົວຢ່າງ, ໃນການຕິດຕັ້ງ Ubuntu ແບບເລີ່ມຕົ້ນ, ໄຟລ໌ທັງສອງອາດຈະຕັ້ງຢູ່ທີ່:

- scriptforge.py: ຕັ້ງຢູ່ໃນ /usr/lib/libreoffice/program

- uno.py: ຕັ້ງຢູ່ໃນ /usr/lib/python3/dist-packages

ໃນກໍລະນີນີ້, ໃຫ້ຕັ້ງຄ່າຕົວປ່ຽນສະພາບແວດລ້ອມ PYTHONPATH ດັ່ງຕໍ່ໄປນີ້ ກ່ອນທີ່ຈະເລີ່ມຕົວແປພາສາ (interpreter) ຂອງ Python:

export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages

ສະຖານທີ່ຂອງໄຟລ໌ເຫຼົ່ານີ້ຈະແຕກຕ່າງກັນໄປຕາມແຕ່ລະລະບົບປະຕິບັດການ ແລະ ວິທີການຕິດຕັ້ງ LibreOffice.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ການຊ່ວຍເຫຼືອສະຄຣິບ Python ຂອງ LibreOffice

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!