Opprette Python-skript med ScriptForge

Forskjeller mellom Basic og Python

ScriptForge-biblioteket er tilgjengelig både for Basic og Python. De fleste tjenester, metoder og egenskaper fungerer identisk i begge programmeringsspråkene. Men på grunn av forskjeller i hvordan hvert språk fungerer, må ScriptForge-brukere være klar over noen egenskaper ved biblioteket når de bruker Python:

Tipsikon

Besøk LibreOfficeDev Python Scripts Hjelp for mer informasjon om Python-skripting med LibreOfficeDev.


Redigering av Python-skript i IDE-er

Python-skrivingstips - relatert til ScriptForge-tjenester offentlige metoder og egenskaper - kan fås fra IDE-er som støtter en slik funksjon. Visuelt, mens du redigerer et brukerskript:

Merknadsikon

Skrivetips vises når du redigerer metoder og egenskaper med store bokstaver.


Kjører Python-skript i LibreOfficeDev

Avhengig av hva du har tenkt å oppnå, kan du velge en av følgende metoder for å kjøre Python-skript i LibreOfficeDev:

Tipsikon

Hvis du planlegger å kjøre skript fra innsiden av LibreOfficeDev-prosessen, anbefales det å installere APSO (Alternative Script Organizer for Python)-utvidelsen. For å utvikle Python-skript utenfra LibreOfficeDev kan du imidlertid velge din foretrukne Python IDE.


Kjøre skript fra innsiden av LibreOfficeDev-prosessen

Bruk av APSO-utvidelsen

Den enkleste måten å komme i gang med Python-skripting i LibreOfficeDev er å installere APSO-utvidelsen. Etter at du har installert den, åpner du en hvilken som helst LibreOfficeDev-komponent og går til Verktøy - Makroer - Organiser Python-skript.

I hovedvinduet til APSO går du til Meny - Python Shell.

Tipsikon

Alternativt kan du åpne APSO ved å bruke standardsnarveien Alt + Shift + F11.


Nå kan du begynne å skrive Python-kommandoer, og skallet vil skrive ut tilsvarende utdata etter at hver kodelinje er utført.

For å begynne å bruke ScriptForge-biblioteket, må du importere CreateScriptService-metoden, som du bruker for å få tilgang til tjenestene som tilbys av biblioteket. Eksemplet nedenfor bruker Basic-tjenesten til å vise en meldingsboks.


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

For å kjøre eksemplet ovenfor, skriv inn hver linje i Python-skallet, én etter én, og trykk Enter-tasten etter at du har skrevet inn hver linje med kode.

Nå kan du begynne å kjøre Python-kommandoer ved hjelp av hvilken som helst av ScriptForge-tjenestene. For eksempel bruker kodestykket nedenfor UI-tjenesten til å opprette et tomt Writer-dokument.


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

Opprette Python-skriptfiler

Du kan opprette dine egne Python-filer og redigere dem med din foretrukne teksteditor. Senere kan du kalle dem fra en hvilken som helst LibreOfficeDev-komponent.

Det første trinnet er å finne ut hvor brukerskriptene dine er lagret. For å gjøre dette, se hjelpesiden for Organisering og plassering av Python-skript.

Nå kan du opprette en tekstfil i Python-brukerskriptmappen din, for eksempel my_script.py, og begynne å skrive skriptene dine.

Neste er et enkelt eksempel som henter den numeriske verdien fra en Calc-celle og øker den med 1. Bare skriv inn følgende kode i my_script.py-filen.


    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, )
  

Dette eksemplet oppretter funksjonen increment_cell. Merk at g_exportedScripts er en tuppel som forteller hvilke funksjoner som skal vises i LibreOfficeDev som brukerskript.

Slik kjører du dette skriptet fra et Calc-dokument:

  1. Opprett eller åpne en Calc-fil.

  2. Skriv inn en numerisk verdi i celle «A1» i gjeldende ark.

  3. Gå til Verktøy - Makroer - Kjør makroer.

  4. Velg Mine makroer - mitt_skript i bibliotekvelgeren. Velg deretter funksjonen inkrement_celle under listen Makronavn.

  5. Klikk på Kjør. Merk at verdien i celle «A1» ble økt med 1.

Du kan også bruke APSO til å kjøre Python-skript på en lignende måte:

  1. Åpne først APSO ved å gå til Verktøy - Makroer - Organiser Python-skript.

  2. I makrolisten navigerer du til Mine makroer - mitt_skript - økningscelle.

  3. Klikk på Utfør.

Kjøre skript separat fra LibreOfficeDev-prosessen

Bestemme installasjonsstien

Det første steget for å kjøre skript fra en separat prosess er å finne mappen der LibreOfficeDev er installert. Det finnes flere måter å gjøre det på, men ScriptForge gir en rask måte å identifisere installasjonsstien din. For å gjøre det, åpne APSOs Python-skall og skriv:


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

Utdataene fra koden ovenfor er basiskatalogen der LibreOfficeDev er installert. Nå må du legge til undermappen «program» i den resulterende banen. Dette er basismappen du skal kjøre Python-skript fra fra en separat prosess.

La oss for eksempel si at du får /usr/lib/libreoffice/ som resultat av å kjøre Python-koden ovenfor. Da må du vurdere /usr/lib/libreoffice/program som banen for å kjøre Python-skriptene dine.

Start LibreOfficeDev med pipe- eller socket-innstillinger

For å kjøre Python-skript fra en separat prosess, må du starte LibreOfficeDev med noen ekstra alternativer som angir pipe-navnet eller vertsnavnet og porten som den eksterne prosessen skal kommunisere med LibreOfficeDev-komponentprosessen gjennom.

Åpne kommandolinjen i operativsystemet, naviger til programmappen i installasjonsmappen for LibreOfficeDev og skriv inn enten:

På Linux / Mac OS:

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

På Windows:

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

som flatpak:

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

Begge kommandoene ovenfor vil starte LibreOfficeDev med en åpen kommunikasjonskanal slik at andre prosesser kan utveksle meldinger med den.

Merk at det forrige eksemplet åpner LibreOfficeDev startsenter. Hvis du vil åpne en bestemt komponent, for eksempel Writer, kan du legge til --writer-flagget til kommandoen, som følger.

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

Legg merke til parameterne name, eller host og port, som i dette eksemplet er henholdsvis aPipeName, eller localhost og 2021.

Kjøre et eksternt Python-skall

Start Python-skallet fra program-mappen i installasjonsstien for LibreOfficeDev. Følg trinnene ovenfor for å lære hvordan du finner installasjonsstien.

På Linux / Mac OS:

$ cd /usr/lib/libreoffice/program

$ python

På Windows:

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

$ python.exe

Dette åpner Python-skallet, og du kan nå begynne å skrive kommandoer som skal utføres av LibreOfficeDev. Men først må du sette opp pipe- eller socket-tilkoblingen. ScriptForge()-setningen nedenfor må gå foran det aller første kallet til CreateScriptService().

Kjør enten:


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

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

Les avsnittet Angi PYTHONPATH nedenfor i tilfelle feil ved import av scriptforge.py eller uno.py.


Den andre kodelinjen ovenfor definerer innstillingene pipe eller host og port slik at Python-skallet kan kommunisere med en pågående LibreOfficeDev-prosess som er åpnet med de samme pipe- eller socket-innstillingene.

Nå kan du kjøre andre Python-kommandoer, og de vil kunne kommunisere med LibreOfficeDev-prosessen. For eksempel:


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

Sette inn PYTHONPATH

Avhengig av konfigurasjonen av operativsystemet ditt, må du angi miljøvariabelen PYTHONPATH for å importere scriptforge.py-biblioteket, som igjen krever import av uno.py-biblioteket.

Bruk operativsystemets filsøkverktøy til å finne katalogen der begge disse filene befinner seg.

For eksempel, på en standard Ubuntu-installasjon kan begge filene være plassert på:

I dette tilfellet, angi miljøvariabelen PYTHONPATH som følger før du starter Python-tolkeren:

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

Merknadsikon

Plasseringen av disse filene vil være forskjellig for hvert operativsystem og LibreOfficeDev-installasjonsmetode.


Supporter oss!

Supporter oss!