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:
Vytvořte nebo otevřete soubor Calcu.
Zadejte do buňky "A1" na aktuálním listu libovolnou číselnou hodnotu.
Zvolte .
Ve výběru knihovny zvolte Moje makra - my_script. Poté vyberte ze seznamu funkci increment_cell.
Klepněte na Spustit. Hodnota v buňce "A1" se zvětšila o 1.
Pro spouštění skriptů Pythonu můžete použít také APSO:
Nejprve APSO otevřete volbou .
V seznamu maker přejděte na .
Klepněte na .
První krokem ke spouštění skriptů z odděleného procesu je najít složky, v níž je LibreOfficeDev nainstalován. Lze to provést několika způsoby, ScriptForge ale nabízí rychlou možnost, jak cestu k instalaci identifikovat. Za tím účelem otevřete shell Pythonu APSO a zadejte do něj:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
Výstupem výše uvedeného kódu je základní adresář, v němž je LibreOfficeDev nainstalován. K výsledné cestě potřebujete přidat podsložku „program“, abyste získali základní složku, z níž budete spouštět v odděleném procesu skripty Pythonu.
Jako výsledek výše uvedeného kódu Pythonu jste získali například cestu /usr/lib/libreoffice/. Poté je cestou pro spouštění skriptů Pythonu /usr/lib/libreoffice/program.
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.
Výše uvedený příkaz otevře úvodní obrazovku LibreOfficeDev. Chcete-li otevřít určitou aplikaci, například Writer, přidejte k příkazu přepínač --writer.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
Poznamenejte si parametry název nebo host a port, které mají v tomto příkladu hodnoty aPipeName nebo localhost a 2021.
Spusťte shell Pythonu ze složky program v cestě s instalací LibreOfficeDev. Instalační cestu zjistíte podle postupu popsaného výše.
Na Linuxu nebo macOS:
$ cd /usr/lib/libreoffice/program
$ python
V systému 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.
Pomocí vyhledávání v operačním systému zjistěte adresáře, kde se tyto soubory nacházejí.
Například ve výchozí instalaci systému Ubuntu se tyto soubory mohou nacházet v těchto umístěních:
scriptforge.py: v /usr/lib/libreoffice/program
uno.py: v /usr/lib/python3/dist-packages
V tomto případě nastavte před spuštěním interpretu Pythonu proměnnou prostředí PYTHONPATH následovně:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
Umístění těchto souborů se liší v závislosti na operačním systému a způsobu, jakým byl LibreOfficeDev nainstalován.