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:

tip

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


Kjører Python-skript i LibreOffice

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

tip

Hvis du planlegger å kjøre skript fra LibreOffice-prosessen, anbefales det å installere APSO (Alternativ Script Organizer for Python) utvidelse. Men for å utvikle Python-skript fra utenfor LibreOffice, kan du velge din foretrukne Python IDE.


Kjøre skript fra LibreOffice-prosessen

Bruker APSO-utvidelsen

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

Gå til Meny - Python Shell i APSOs hovedvindu.

tip

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 linje med kode er utført.

For å begynne å bruke ScriptForge-biblioteket, må du importere CreateScriptService-metoden, som du vil få tilgang til tjenestene som tilbys av biblioteket. Eksemplet nedenfor bruker Basic-tjenesten for å 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, en etter en, og trykk Enter-tasten etter at du har skrevet inn hver linje med kode.

Nå kan du begynne å utføre Python-kommandoer ved å bruke hvilken som helst av ScriptForge-tjenestene. For eksempel bruker kodebiten nedenfor UI-tjenesten til å lage et tomt Writer-dokument.


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

Opprette Python-skriptfiler

Du kan lage dine egne Python-filer og redigere dem med ditt foretrukne tekstredigeringsprogram. Senere kan du ringe dem fra en hvilken som helst LibreOffice-komponent.

Det første trinnet er å finne hvor brukerskriptene dine er lagret. For det, se Python Skript Organisering og Sted hjelpeside.

Nå kan du lage en tekstfil i Python-brukerskriptmappen, for eksempel sf_test.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 sf_test.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 vil vises i LibreOffice 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 - sf_test i bibliotekvelgeren. Velg deretter funksjonen increment_cell under Makronavn-listen.

  5. Klikk Kjør. Merk at verdien i celle "A1" ble økt med 1.

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

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

  2. I makrolisten, naviger til Mine makroer - sf_test - increment_cell.

  3. Klikk Utfør.

Kjøre skript separat fra LibreOffice-prosessen

Bestemmer installasjonsstien

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


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

Utdata fra koden ovenfor er basiskatalogen der LibreOffice er installert. Nå må du legge til undermappen "program" til den resulterende banen. Dette er basismappen du vil kjøre Python-skript fra fra en egen prosess.

Anta for eksempel at du får /usr/lib/libreoffice/ som et resultat av å kjøre Python-koden ovenfor. Deretter må du vurdere /usr/lib/libreoffice/program som stien for å kjøre Python-skriptene dine.

Start LibreOffice med sokkel-innstillinger

For å kjøre Python-skript fra en separat prosess, må du starte LibreOffice med noen få tilleggsalternativer som spesifiserer vertsnavnet og porten som den eksterne prosessen vil kommunisere med LibreOffice-komponentprosessen gjennom.

Åpne operativsystemets ledetekst, naviger til programmappen i installasjonskatalogen for LibreOffice og skriv:

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

Kommandoen ovenfor vil starte LibreOffice med en kommunikasjonskanal åpen slik at andre prosesser kan utveksle meldinger med den.

Merk at det forrige eksemplet åpner LibreOffice startsenter. Hvis du vil åpne en spesifikk 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 host og port, som i dette eksemplet er henholdsvis localhost og 2021.

Kjører et eksternt Python-skall

Start Python-skallet fra program-mappen i LibreOffice-installasjonsstien. Følg trinnene over for å finne ut hvordan du finner installasjonsstiendin.

På Linux / Mac OS:

$ cd /usr/lib/libreoffice/program

$ python

På Windows:

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

$ python.exe

Dette vil åpne Python-skallet og nå kan du begynne å skrive kommandoer som vil bli utført av LibreOffice. Men først må du sette opp stikkontakten.


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

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


Den andre linjen med kode ovenfor definerer host og port innstillingene slik at Python-skallet kan kommunisere med en pågående LibreOffice-prosess åpnet med de samme socketinnstillingene.

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


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

Setting PYTHONPATH

Depending on your operating system's configuration you will need to set the environment variable PYTHONPATH in order to import the scriptforge.py library, which in turn requires importing the uno.py library.

Use your operating system's file search tool to determine the directory where both these files are located.

For instance, on a default Ubuntu installation both files may be located at:

In this case, set the environment variable PYTHONPATH as follows before starting the Python interpreter:

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

note

The location of these files will be different for each operating system and LibreOffice installation method.


Supporter oss!