Innhold

# 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:

- Metoder og egenskapsnavn: I Python kan alle metoder og egenskaper brukes i små bokstaver, ProperCased eller camelCased-formater.

- Argumenter: Alle søkeordargumenter som sendes videre til metoder, er i små bokstaver.

- Datoer: Alle datoobjekter sendes og returneres som datetime.datetime opprinnelige Python-objekter.

- Arrays: Endimensjonale matriser sendes og returneres som tupler (som er et uforanderlig objekt). Todimensjonale matriser sendes og returneres som tupler av tupler.

- Ingen: Pythons Ingen søkeord tilsvarer Basics Null, Tom eller Ingenting.

- UNO-objekter: Alle UNO-strukturer utveksles mellom Basic og Python uten endringer.

- Feilsøking: Når det oppstår en feil i Python-skript som bruker ScriptForge, viser feilmeldingen fra Python-utførelsesstakken linjen med kode som utløste feilen. I Basic viser ikke feilmeldinger denne informasjonen.

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

## 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:

- ved å sveve over en objektforekomst, en metode eller en egenskap vises dens detaljerte beskrivelse.

- et "." etter en objektforekomst viser en rullegardinboks som viser alle tilgjengelige grensesnitt.

- parentes etter et metodenavn starter kodefullføring ved å vise argumentene.

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

## 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:

- Kjør skript i den gjeldende LibreOffice-prosessen: Python-skript kjøres fra LibreOffice-prosessen ved å bruke Verktøy - Makroer - Kjør makro-menyen eller APSO-utvidelsen for å ringe brukeren skript lagret i Python-skriptmappen. Du kan også bruke APSO Python-skallet til å kjøre Python-skript interaktivt.

- Kjør skript separat fra LibreOffice-prosessen: Python-skript kjøres fra en ekstern prosess som kobles til en pågående LibreOffice-prosess ved hjelp av en socket.

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.

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)

Les delen Angi PYTHONPATH nedenfor i tilfelle feil ved import av scriptforge.py eller 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)

### Angi PYTHONPATH

Avhengig av operativsystemets konfigurasjon må du angi miljøvariabelen PYTHONPATH for å importere scriptforge.py-biblioteket, som igjen krever import av uno. py bibliotek.

Bruk operativsystemets filsøkeverktøy for å finne katalogen der begge disse filene er plassert.

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 setter du miljøvariabelen PYTHONPATH som følger før du starter Python-tolken:

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

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

Lignende emner

ScriptForge-biblioteket

LibreOffice Python Skript Hjelp

Starter LibreOffice programvare med parametere