Izvajanje skriptov Python v LibreOfficeDev

Glede na to, kaj želite doseči, lahko izberete enega od naslednjih načinov izvajanja skriptov Python v LibreOfficeDev:

Ikona namiga

Če nameravate izvajati skripte v okviru procesa LibreOfficeDev, priporočamo namestitev razširitve APSO (Alternative Python Script Organizer). Za razvoj skriptov Python izven LibreOfficeDev lahko izberete tudi svoje priljubljeno razvojno okolje IDE za Python.


Izvajanje skriptov v okviru procesa LibreOfficeDev

Z uporabo razširitve APSO

Prve korake s skripti Python v LibreOfficeDev najenostavneje opravite z namestitvijo razširitve APSO. Po njeni namestitvi odprite poljubno komponento paketa LibreOfficeDev in izberite Orodja – Makri – Organize Python scripts.

V osrednjem oknu APSO izberite Menu – Python Shell.

Ikona namiga

Namesto tega lahko odprete razširitev APSO s privzeto kombinacijo tipk izmenjalka + dvigalka + F11.


Zdaj lahko pričnete s pisanjem ukazov Python in v lupini se izpiše ustrezen izhod po vsaki izvedeni vrstice kode.

Za delo s knjižnico ScriptForge morate uvoziti metodo CreateScriptService, s katero boste lahko dostopali do storitev, ki jih ponuja knjižnica. Spodnji primer uporablja storitev Basic, s katero prikaže okno s sporočilom.


        from scriptforge import CreateScriptService
        bas = CreateScriptService("Basic")
        bas.MsgBox("Hello!")
        

Za izvajanje zgornjega primera vnesite vsako vrstico posebej v lupino Python, tako da po vsaki vrstici kode pritisnete vnašalko.

Zdaj lahko pričnete izvajati ukaze Python z uporabo poljubne storitve ScriptForge. Primer: spodnji odlomek kode uporablja storitev UI za izdelavo praznega dokumenta programa Writer.


        ui = CreateScriptService("UI")
        doc = ui.CreateDocument("Writer")
        

Ustvarjanje datotek skriptov Python

Ustvarite lahko lastne datoteke Python in jih urejate v svojem priljubljenem urejevalniku besedil. Kasneje jih lahko kličete iz poljubne komponente LibreOfficeDev.

Najprej morate poiskati mesto, kjer so shranjeni vaši uporabniški skripti. Glede tega si oglejte stran pomoči Organizacija in mesto skriptov v Pythonu.

Zdaj lahko ustvarite besedilno datoteko v mapi svojih uporabniških skriptov Python, npr. moj_skript.py, in pričnete s pisanjem svojih skriptov.

Sledi enostaven primer, ki pridobi številsko vrednost iz celice dokumenta Calc in jo poveča za 1. Preprosto vnesite sledečo kodo v datoteko 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, )
  

Ta primer ustvari funkcijo increment_cell. Upoštevajte, da je g_exportedScripts n-terica, ki določa, katere funkcije bodo v LibreOfficeDev prikazane kot uporabniški skripti.

Ta skript izvedete v dokumentu Calc na sledeč način:

  1. Ustvarite ali odprite datoteko programa Calc.

  2. Vnesite številsko vrednost v celico »A1« na trenutnem delovnem listu.

  3. Izberite Orodja – Makri – Zaženi makre.

  4. V izbirniku knjižnic izberite Moji Makri – my_script. Nato izberite funkcijo increment_cell na seznamu Ime makra.

  5. Kliknite Zaženi. Upoštevajte, da je vrednost v celici »A1« povečana za 1.

Na podoben način lahko za izvajanje skriptov Python uporabite tudi razširitev APSO:

  1. Naprej odprite APSO z Orodja – Makri – Organize Python scripts.

  2. Na seznamu makrov krmarite do Moji makri – moj_skript – increment_cell.

  3. Kliknite Zaženi.

Od procesa LibreOfficeDev ločeno izvajanje skriptov

Ugotavljanje namestitvene poti

Prvi korak za izvajanje skriptov iz ločenega procesa je, da poiščete mapo, kjer je nameščen LibreOfficeDev. Obstaja več načinov za to, vendar ScriptForge ponuja hiter način za identifikacijo vaše namestitvene poti. V ta namen odprite lupino Python razširitve APSO in vnesite:


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

Rezultat zgornje kode je osnovna mapa, kjer je nameščen paket LibreOfficeDev. Zdaj morate rezultatu dodati podmapo »program«. To je osnovna mapa, iz katere boste izvajali skripte Python v ločenem procesu.

Primer: recimo, da je rezultat zgornje kode Python /usr/lib/libreoffice/. Kot pot za izvajanje svojih skriptov Python morate tako uporabiti /usr/lib/libreoffice/program.

Zaženite LibreOfficeDev z nastavitvami pipe ali socket

Če želite izvajati skripte Python iz ločenega procesa, morate zagnati LibreOfficeDev z nekaj dodatnimi možnostmi, ki določajo ime cevovoda ali gostitelja in vrata, skozi katera bo zunanji proces komuniciral s procesom komponente LibreOfficeDev.

Odprite ukazno vrstico operacijskega sistema, krmarite do programske mape svoje namestitvene mape LibreOfficeDev in vnesite eno od spodnjih možnosti:

Na sistemih GNU/Linux / macOS:

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

Na sistemih Windows:

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

Kot Flatpak:

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

Poljubni zgornji ukaz zažene LibreOfficeDev z odprtim kanalom za komunikacijo, tako da lahko ostali procesi z njim izmenjujejo sporočila.

Upoštevajte, da prejšnji primer odpre začetno središče LibreOfficeDev. Če želite odpreti določeno komponento paketa, npr. program Writer, lahko ukazu dodate zastavico --writer, kot sledi.

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

Zapomnite si vrednost parametrov name ali host in port, ki sta v tem primeru aPipeName ter localhost in 2021.

Izvajanje zunanje lupine Python

Zaženite lupino Python iz mape program znotraj svoje namestitvene poti LibreOfficeDev. Sledite zgornjim korakom, da izveste, kako poiskati svojo namestitveno pot.

Na sistemih GNU/Linux in macOS:

$ cd /usr/lib/libreoffice/program

$ python

Na sistemih Windows:

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

$ python.exe

S tem odprete lupino Python in zdaj lahko začnete vnašati ukaze, ki se bodo izvajali v LibreOfficeDev. Najprej pa morate nastaviti povezavo prek cevi (pipe) ali vtičnice (socket). Spodnji ukaz ScriptForge() se mora pojaviti pred prvim klicem CreateScriptService().

Zaženite eno od spodnjih možnosti:


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

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

Read the section Setting PYTHONPATH below in case of errors importing scriptforge.py or uno.py.


Druga vrstica zgornje kode določa nastavitev pipe ali nastavitvi host in port, tako da lahko lupina Python komunicira s tekočim procesom LibreOfficeDev, ki je odprt z istimi nastavitvami cevovoda ali vtičnice.

Zdaj lahko izvajate druge ukaze Python in ti bodo lahko komunicirali s procesom LibreOfficeDev. Primer:


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

Določanje PYTHONPATH

Glede na nastavitve operacijskega sistema boste morali določiti okoljsko spremenljivko PYTHONPATH za uvoz knjižnice scriptforge.py, ki posledično zahteva uvoz knjižnice uno.py.

Uporabite orodje iskanja datotek vašega operacijskega sistema, da določite mapi, v katerih se nahajata ti datoteki.

Na privzeti namestitvi Ubuntu se datoteki tako najverjetneje nahajata v:

V tem primeru okoljsko spremenljivko PYTHONPATH pred zagonom tolmača Python nastavite tako:

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

Ikona opombe

Mesto teh datotek se razlikuje glede na operacijski sistem in metodo namestitve LibreOfficeDev.


Podprite nas!

Podprite nas!