Ve vývojových prostředích (IDE) s příslušnou funkcí lze získat pro Python typovou nápovědu týkající se veřejných metod a vlastností knihovny ScriptForge. Při úpravě uživatelského skriptu:
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 LibreOffice:
-
Spouštět skripty v rámci aktuálního procesu LibreOffice: Skripty Pythonu jsou spouštěny v rámci procesu LibreOffice 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 LibreOffice: Skripty Pythonu se spouští z externího procesu, který se připojí k běžícímu procesu LibreOffice pomocí roury (pipe) nebo socketu.
Spouštění skriptů v rámci procesu LibreOffice
Pomocí rozšíření APSO
Nejsnazším způsobem jak začít v LibreOffice se skripty Pythonu, je nainstalovat rozšíření APSO. Po instalaci otevřete nějakou aplikaci LibreOffice 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")
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 LibreOffice.
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 LibreOffice 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 .
Spouštění skriptů odděleně od procesu LibreOffice
Určení instalační složky
První krokem ke spouštění skriptů z odděleného procesu je najít složky, v níž je LibreOffice 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 LibreOffice 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.
Spusťte LibreOffice s nastavením roury nebo socketu
Abyste mohli spouštět skripty Pythonu z odděleného procesu, je nutné spustit LibreOffice 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í LibreOffice.
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 LibreOffice 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í LibreOffice 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 LibreOffice. 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.
Spuštění externího shellu Pythonu
Spusťte shell Pythonu ze složky program v cestě s instalací LibreOffice. 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 LibreOffice 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)
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 LibreOffice, 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 LibreOffice. 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.
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:
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 LibreOffice nainstalován.