LibreOfficeDev 26.8 Hjelp
Avhengig av hva du har tenkt å oppnå, kan du velge en av følgende metoder for å kjøre Python-skript i LibreOfficeDev:
Kjør skript i den gjeldende LibreOfficeDev-prosessen: Python-skript kjøres fra LibreOfficeDev-prosessen ved å bruke -menyen eller APSO-utvidelsen for å kalle brukerskript som er lagret i Python-skriptmappen. Du kan også bruke APSO Python-skallet til å kjøre Python-skript interaktivt.
Kjør skript separat fra LibreOfficeDev-prosessen: Python-skript kjøres fra en ekstern prosess som kobler seg til en pågående LibreOfficeDev-prosess ved hjelp av en pipe eller en socket.
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.
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 .
I hovedvinduet til APSO går du til .
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")
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:
Opprett eller åpne en Calc-fil.
Skriv inn en numerisk verdi i celle «A1» i gjeldende ark.
Gå til .
Velg Mine makroer - mitt_skript i bibliotekvelgeren. Velg deretter funksjonen inkrement_celle under listen .
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:
Åpne først APSO ved å gå til .
I makrolisten navigerer du til .
Klikk på .
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.
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.
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)
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)
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å:
scriptforge.py: Ligger i /usr/lib/libreoffice/program
uno.py: Ligger i /usr/lib/python3/dist-packages
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
Plasseringen av disse filene vil være forskjellig for hvert operativsystem og LibreOfficeDev-installasjonsmetode.