Nápověda LibreOfficeDev 27.2
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:
Spouštět skripty v rámci aktuálního procesu LibreOfficeDev: Skripty Pythonu jsou spouštěny v rámci procesu LibreOfficeDev volbou z nabídky nebo pomocí rozšíření APSO, který se volají uživatelské skripty uložené ve složce se skripty Pythonu. Shell Pythonu APSO můžete také využít pro interaktivní spouštění skriptů Pythonu.
Spouštět skripty odděleně od procesu LibreOfficeDev: Skripty Pythonu se spouští z externího procesu, který se připojí k běžícímu procesu LibreOfficeDev pomocí roury (pipe) nebo socketu.
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).
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 .
V hlavním okně APSO zvolte .
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")
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:
Create or open a Calc file.
Enter some numeric value into cell "A1" in the current sheet.
Go to .
Choose My Macros - my_script in the library selector. Then choose the increment_cell function under the list.
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:
First open APSO by going to .
In the macro list, navigate to .
Click .
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.
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.
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)
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)
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:
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 LibreOfficeDev installation method.