Spouštění skriptů LibreOfficeDev Python

Podle toho, čeho hodláte dosáhnout, můžete zvolit jeden z následujících přístupů, jak spouštět skripty Pythonu v LibreOfficeDev:

Ikona tipu

Plánujete-li spouštět skripty v rámci procesu LibreOfficeDev, doporučuje se nainstalovat rozšíření APSO (Alternative Script Organizer for Python). K vývoji skriptů Pythonu mimo LibreOfficeDev však můžete zvolit svoje oblíbené integrované vývojové prostředí (IDE).


Spouštění skriptů v rámci procesu LibreOfficeDev

Pomocí rozšíření APSO

Nejsnazším způsobem jak začít v LibreOfficeDev se skripty Pythonu, je nainstalovat rozšíření APSO. Po instalaci otevřete nějakou aplikaci LibreOfficeDev a zvolte Nástroje - Makra - Organize Python scripts.

V hlavním okně APSO zvolte Menu - Python shell.

Ikona tipu

APSO můžete otevřít také výchozí zkratkou Alt+Shift+F11.


Poté můžete začít psát příkazy Pythonu, po provedení každého řádku kódu se v shellu vypíše odpovídající výstup.

Abyste mohli začít používat knihovnu ScriptForge, je nutné importovat metodu CreateScriptService, díky níž budete moci přistupovat k službám poskytovaným touto knihovnou. V níže uvedeném příkladu se používá služba Basic pro zobrazení dialogu.


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

Výše uvedený příklad spustíte tak, že postupně po jedné zadáte řádky do shellu Pythonu a po každé stisknete klávesu Enter.

Spouštět můžete příkazy Pythonu používající libovolnou službu ScriptForge. Následující část kódu například vytvoří prázdné okno Writeru pomocí služby UI.


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

Vytváření souborů se skripty Pythonu

Vlastní skripty Pythonu můžete vytvářet a upravovat ve svém oblíbeném textovém editoru. Později je zavoláte z jakékoliv aplikace LibreOfficeDev.

Prvním krokem je zjistit, kde jsou uloženy uživatelské skripty. To je popsáno na stránce Uspořádání a umístění skriptů Pythonu.

Poté můžete ve složce s uživatelskými skripty Pythonu vytvořit textový soubor, například my_script.py, a začít se psaním skriptů.

Následuje jednoduchý příklad, v němž se získá z buňky Calcu číselná hodnota a zvětší se o 1. Do souboru my_script.py přepište následující kód.


    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, )
  

V příkladu je vytvořena funkce increment_cell. Proměnná g_exportedScripts je n-tice určující, které funkce se v LibreOfficeDev zobrazí jako uživatelské skripty.

Chcete-li tento skript spustit v dokumentu Calcu:

  1. Create or open a Calc file.

  2. Enter some numeric value into cell "A1" in the current sheet.

  3. Go to Tools - Macros - Run Macros .

  4. Choose My Macros - my_script in the library selector. Then choose the increment_cell function under the Macro Name list.

  5. Click Run. Note that the value in cell "A1" was incremented by 1.

You can also use APSO to run Python scripts in a similar manner:

  1. First open APSO by going to Tools - Macros - Organize Python Scripts.

  2. In the macro list, navigate to My Macros - my_script - increment_cell.

  3. Click Execute.

Running Scripts separately from the LibreOfficeDev process

Determining the Installation Path

The first step to run scripts from a separate process is to find the folder where LibreOfficeDev is installed. There are several ways to do that, but ScriptForge provides a quick way to identify your installation path. For that, open APSO's Python shell and type:


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

The output from the code above is the base directory where LibreOfficeDev is installed. Now you need to add the "program" subfolder to the resulting path. This is the base folder from which you will run Python scripts from a separate process.

For example, suppose you get /usr/lib/libreoffice/ as the result from running the Python code above. Then you need to consider /usr/lib/libreoffice/program as the path to run your Python scripts.

Start LibreOfficeDev with pipe or socket settings

Abyste mohli spouštět skripty Pythonu z odděleného procesu, je nutné spustit LibreOfficeDev s několika dalšími parametry, které určují název roury nebo název hostitele a port, pomocí kterého bude externí proces komunikovat s procesem s aplikací LibreOfficeDev.

Otevřete příkazový řádek operačního systému, přejděte v něm do složky „program“ v instalačním adresáři LibreOfficeDev a zadejte:

Na Linuxu nebo macOS:

libreoffice --accept='pipe,name=aPipeName;urp;'

V systému Windows:

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

u Flatpaku:

flatpak run org.libreOffice.LibreOffice accept='socket,host=localhost,port=2021;urp;'

Příkaz výše spustí LibreOfficeDev s otevřeným komunikačním kanálem, prostřednictvím kterého s ním mohou jiné procesy vyměňovat zprávy.

Note that the previous example opens LibreOfficeDev start center. If you want to open a specific component, for instance Writer, you can add the --writer flag to the command, as follows.

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

Take note of the name, or host and port parameters, which in this example are aPipeName, or localhost and 2021, respectively.

Running an External Python Shell

Start the Python shell from within the program folder inside your LibreOfficeDev installation path. Follow the steps above to learn how to find your installation path.

On Linux or macOS:

$ cd /usr/lib/libreoffice/program

$ python

On Windows:

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

$ python.exe

Tím se otevře příkazová řádka Pythonu a nyní můžete začít psát příkazy, které bude LibreOfficeDev provádět. Nejprve však musíte nastavit připojení pomocí roury nebo socketu. Příkaz ScriptForge() níže musí předcházet úplně prvnímu volání CreateScriptService().

Spusťte:


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

    from scriptforge import ScriptForge, CreateScriptService
    ScriptForge(hostname='localhost', port=2021)
  
Ikona poznámky

V případě chyb při importu scriptforge.py nebo uno.py si přečtěte sekci Nastavení PYTHONPATH níže.


Na druhém řádku výše uvedeného kódu je zadáno nastavení roury nebo host a port, díky němuž může shell Pythonu komunikovat se spuštěným procesem LibreOfficeDev, který byl otevřen se stejným nastavením roury nebo socketu.

Poté můžete spouštět další příkazy Pythonu, budou moci komunikovat s procesem LibreOfficeDev. Například:


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

Nastavení PYTHONPATH

V závislosti na konfiguraci operačního systému bude potřeba nastavit proměnnou prostředí PYTHONPATH, aby bylo možné importovat knihovnu scriptforge.py, která dále vyžaduje import knihovny uno.py.

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

Ikona poznámky

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


Podpořte nás!

Podpořte nás!