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:

Tipikon

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


Redigering af Python-scripts i IDE'er

Mens du redigerer Python-scripts kan du få indskrivningstips ‒ relateret til ScriptForge-tjenesters offentlige metoder og egenskaber ‒ fra IDE'er som understøtter denne funktion. Visuelt mens du redigerer et brugerscript:

Noteikon

Skrivetips vises når metoder og egenskaber redigeres med korrekte store og små bogstaver.


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:

Tipikon

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.

Tipikon

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 ▸ Administrér 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 rør- eller 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, navigér til programmappen i installationsmappen for LibreOffice og skriv enten:

./soffice --accept='pipe,name=libreoffice;urp;'

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

Begge kommandoer ovenfor vil starte LibreOffice med en åben kommunikationskanal, sådan at andre processer kan udveksle meddelelser med det.

Bemærk at det forrige eksempel åbner LibreOffice-startcenter. Hvis du ønsker at åbne en specifik komponent, for eksempel Writer, kan du tilføje flaget --writer til kommandoen, som vist herunder.

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

Læg mærke til paremetrene name eller host og port, som i dette eksempel er libreoffice, eller localhost 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, og du kan begynde at skrive kommander, som skal udføres af LibreOffice. Men først må det opsætte pipe (rør) eller socket (sokkel) forbindelsen. ScriptForge()-sætningen nedenfor skal gå forud for det allerførste kald til CreateScriptService().

Udfør enten:


   from scriptforge import ScriptForge, CreateScriptService
   ScriptForge(pipe='libreoffice')

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

Læs afsnittet Indstilling af PYTHONPATH nedenfor i tilfælde af fejl ved import af scriptforge.py eller uno.py.


Den anden kodelinje ovenfor definerer pipe (rør) or host (vært) and port-indstillingerne, sådan at Python-skallen kan kommunikere med en kørende LibreOffice-proces åbnet med de samme rør- eller sokkel-indstillinger.

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)
  

Indstilling af PYTHONPATH

Afhængigt af dit operativsystems konfiguration, kan det være nødvendigt at du indstiller miljøvariablen PYTHONPATH for at kunne importere scriptforge.py-biblioteket, som selv kræver import af uno.py-biblioteket.

Brug dit operativsystems filsøgningsværktøj til at bestemme den mappe, hvor begge disse filer er placeret.

For eksempel på en standard Ubuntu-installation kan begge filer være placeret på:

I dette tilfælde, sæt miljøvariablen PYTHONPATH på følgende måde før du starter Python-fortolkeren:

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

Noteikon

Placering af disse filer vil være forskellig for hvert operativsystem og LibreOffice-installationsmetode.


Støt os venligst!

Støt os venligst!