Indhold

# Oprettelse af Python-scripts med ScriptForge

## Forskelle mellem Basic og Python

Biblioteket ScriptForge er tilgængeligt for både Basic og Python. De fleste tjenester, metoder og egenskaber fungerer på samme måde i begge programmeringssprog. På grund af forskelle i, hvordan hvert sprog virker, skal ScriptForge-brugere være bevidst om nogle programmets karakteristika ved brug af Python:

- Metoder og egenskabsnavne : I Python kan alle metoder og egenskaber bruges skrevet med småt, som EgenNavne eller som kamelSats.

- Argumenter: Alle argument-nøgleord, der videregives til metoder skrives med småt.

- Datoer: Alle dato-objekter videregives og returneres som datetime.datetime hjemmehørende Python-objekter.

- Matrixer: En-dimensionelle matrixer videregives og returneres som tupler (er et uforanderligt objekt). To-dimensionelle matrixer videregives og returneres som tupler af tupler.

- Ingen: Python's nøgleord None (Ingen)er ligeværdigt med Basic's Null (Nul), Empty (Tom) eller Nothing (Intet).

- UNO-objekter: Alle UNO-strukturer udveksles mellem Basic og Python uden nogle ændringer.

- Fejlsøgning: Nårsomhelst der sker en fejl i Python-scripts, der bruger ScriptForge, viser fejlbeskeden, der gives af Pythons kørselsstak, den kodelinje, der udløste fejlen. I Basic viser fejlbeskeder ikke denne oplysning.

Besøg Hjælp til LibreOffice Python-scripter og se flere oplysninger om Python-scriptarbejde med LibreOffice.

## Kørsel af Python-scripts under LibreOffice

Afhængigt af, hvad du vil opnå, kan du vælge en af de følgende tilgange til at køre Python-scripts i LibreOffice:

- Kør scripts inde i den aktuelle LibreOffice-proces: Python-scripts køres inde i LibreOffice-processen ved hjælp af menuen Funktioner ▸ Makroer ▸ Kør Makro eller APSO-udvidelsen til at kalde bruger-scripts, der er gemt i mappen Python-scripts. Du kan også bruge APSO Python-skallen til at køre Python-scripts interaktivt.

- Kør scripts adskilt fra LibreOffice-processen: Python-scripts udføres fra en ekstern proces, der forbindes med en kørende LibreOffice-proces ved hjælp af en sokkel.

Hvis du planlægger at køre scripts inde fra processen LibreOffice, anbefales det at installere APSO- (Alternative Python Script Organizer) for ) udvidelsen . Til at udvikle Python-scripts uden for LibreOffice kan du vælge dit foretrukne Python IDE.

## Kørsel af scripts inde fra LibreOffice-processen

### Med APSO-udvidelsen

Den letteste at starte arbejdet med Python-scripts i LibreOffice på er at installere APSO-udvidelsen. Når du har installeret den, åbner en vilkårlig LibreOffice-komponent og går til Funktioner ▸ Makroer ▸ Administrér Python-scripts.

I APSO's hovedvindue går du til Menu - Python-skal.

Alternativt kan du åbne APSO med standardgenvejen Alt + Skift + F11.

Nu kan du begynde at skrive Python-kommandoer og skallen vil udskrive de tilsvarende uddata, efter at hver kodelinje er udført.

For at begynde at bruge biblioteket ScriptForge er du nødt til at importere metoden CreateScriptService (opret_script-tjeneste); med den vil du være i stand til at tilgå de tjenester, der biblioteket tilbyder. Eksemplet herunder bruger tjenesten Basic til at vise et beskedfelt.

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

For at køre eksemplet herover indtaster du hver linje i Python-skallen, en efter en, og og trykker på Enter-tasten, når du har indtastet hver kodelinje.

Nu kan du begynde at køre Python-kommandoer med enhver tjeneste i ScriptForge. For eksempel bruger kodestumpen herunder tjenesten UI til at oprette et tomt Writer-dokument.

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

### Oprettelse af Python script-filer.

Du kan oprette dine egne Python-filer og redigere dem i dit foretrukne program til tekstredigering. Senere kan du kalde dem indefra et vilkårligt LibreOffice-komponent.

Det første trin er at den placering, hvor dune bruger-scripts gemmes. Se hjælpesiden Python-scripts' organisering og placering.

Nu kan du oprette en tekstfil i din mappe Python-bruger-scripts, for eksempel sf_test.py og begynde at skrive dine scripts.

Det næst er et enkelt eksempel, der henter den numeriske værdi fra en Calc-celle og forøger den med 1. Skriv simpelthen den følgende kode ind i filen sf_test.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, )

Dette eksempel oprette funktionen increment_cell. Bemærk, at g_exportedScripts er en tuple, der fortæller, hvilke funktioner, der vises i LibreOffice som bruger-scripts.

For at køre dette script inde fra et Calc-dokument:

1. Opret eller åbn en Calc-fil.

2. Indtast nogle numeriske værdi i celle "A1" i det aktuelle ark.

3. Gå til Funktioner - Makroer - Kør makroer.

4. Vælg Mine Makroer - sf_test i biblioteksvælgeren. Vælg så funktionen increment_cell på listen Makronavn.

5. Klik på Kør. Bemærk at værdien i celle "A1" blev forøget med 1.

Du kan også bruge APSO til at køre Python-scripts på en lignende måde:

1. Åbn først APSO ved at gå til Funktioner - Makroer - Organsier Python-scripts.

2. På makrolisten navigerer du til Mine Makroer ▸ sf_test ▸ increment_cell.

3. Klik på Udfør.

## Kørsel af scripts uafhængigt af processen LibreOffice

### Bestemmelse af Installationsstien

Det første trin i at køre scripts fra en uafhængig proces er at finde mappen, hver LibreOffice er installeret. Der er flere måder at gøre dette på, men ScriptForge sørger for en hurtig måde at identificere din installationssti på: åbn APSO's Python-skal og skriv:

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

Uddata fra koden ovenfor er den basismappe, hvor LibreOffice er installeret. Nu skal du tilføje undermappen "program" til den resulterende sti. Det er den basismappe, hvorfra du kører Python-scripts fra en uafhængig proces.

Antag for eksempel at du får /usr/lib/libreoffice/ som resultat af at køre Python-koden ovenfor. Så skal du overveje at køre dine Python-scripts fra stien /usr/lib/libreoffice/program.

### Start LibreOffice med sokkel-indstillinger

For at køre Python-scripts fra en separat proces skal du starte LibreOffice med nogle få ekstre indstillinger, der angiver værtsnavnet og porten, som den eksterne proces skal kommunikere med LibreOffice komponent-processen gennem.

Åbn dit operativsystems kommandoprompt og navigér til programmappen under din LibreOffice installationsmappe og indtast:

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

Kommandoen herover starter LibreOffice med en åben komunikationskanal, sådan at andre processer kan udveksle beskeder med den.

Bemærk, at det foregående eksempel åbner LibreOffices startcenter. Hvis du vil åbne en bestemt komponent, for eksempel Writer, kan du tilføje flaget --writer til kommando, som beskrevet nedenfor.

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

Notér parametrene host (vært) og port, som i dette eksempel er henholdvis localhost (lokalvært) og 2021.

### Kørsel af en ekstern Python-skal

Start Python-skallen indefra mappen program i din LibreOffice installations-sti. Følg trinene herover for at lære at finde din installationssti.

Under Linux / Mac OS:

$ cd /usr/lib/libreoffice/program

$ python

Under Windows:

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

$ python.exe

Dette vil åbne Python-skallen, så du nu kan begynde af skrive kommandoer, der bliver udfært af LibreOffice. Men du skal først opsætte sokkelforbindelsen.

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

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

Den anden kodelinje herover bestemmer indstillingerne host (vært) og port, sådan at Python-skallen kan kommunikere med en kørende LibreOffice-proces, der er åbnet med de samme sokkelindstillinger.

Nu kan du køre andre Python-kommandoer og de vil kunne kommunikere med LibreOffice-processen. 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:

- scriptforge.py: Located in /usr/lib/libreoffice/program

- uno.py: Located in /usr/lib/python3/dist-packages

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

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

Relaterede emner

Biblioteket ScriptForge

Hjælp til LibreOffice Pythonscripts

Start af LibreOffice-software med parametere