Pomoc za LibreOffice 25.8
Wuwołanje skriptow Python z makrow LibreOffice je móžne, a wužitne funkcije su k dispoziciji, na přikład:
Identifikacija ComputerName abo wotkryće OSName stej móžnej,
Funkcija Basic FileLen()a com.sun.star.ucb.SimpleFileAccess. API-funkcija getSize() ma hornju hranicu 2 gigabajtow datajoweje wulkosće, kotruž Python pospytuje zmištrować,
com.sun.star.util.PathSettings da so normalizować,
a wjele wjace.
Přisprawny wobchad z LibreOffice Basic a z funkcijemi tykački programowanja nałoženjow (API) je poručomny, prjedy hač so wuwołanja mjez rěčemi wot Basic do Python, do JavaScript abo do druheje skriptoweje rěče wuwjedu.
Skripty Python móža wosobinske, wozjewjene abo do dokumentow zasadźene być. Zo by je wuwjedł, LibreOffice Basic městna skriptow Python trjeba. Pytanje za UNO-objektami, kotrež su kompatibelne z com.sun.star.script.provider.XScript wam zmóžnja, skripty Python wuwjesć:
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Skriptowy objekt Python sej do wuwjedźenja wobstarać
             ' Argumenty:
             ' Makro: jako "library/module.py$macro" abo "module.py$macro"
             ' Městno: jako "document", "share", "user" abo ENUM(eracija)
             ' Wuslědk:
             ' pyta słužbu com.sun.star.script.provider.XScript-UNO'''
             If IsMissing(location) Then location = "user"
             Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
             Dim sp As Object ' kompatibelny z com.sun.star.script.provider.XScriptProvider
             Dim uri As String
             If location="document" Then
                 sp = ThisComponent.getScriptProvider()
             Else
                 mspf = CreateUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
                 sp = mspf.createScriptProvider("")
             End If
             uri = "vnd.sun.star.script:"& macro &"?language=Python&location="& location
             GetPythonScript = sp.getScript(uri)
         End Function ' GetPythonScript
      workstation_name = script.invoke(Array(), Array(), Array())
opSysName = script.invoke(Matrix(), in_outs, Matrix()) ' in_out je pólna wariabla
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Pod rutinami ComputerName a GetFilelen so jeju pendantaj Python wuwołujetej, z pomocu do toho naspomnjeneje funkcije GetPythonScript. Wobchadźenje z wuwzaćom datailěrowane njeje.
         Option Explicit
         Kompatibelne nastajenje ' Kajkosće so podpěruja
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Mjeno dźěłoweje stacije'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''Datajowa wulkosć w bajtach'''
             scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
             GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
         End Function ' GetFilelen
             
         Private Type _SCRIPT_LOCATION
             ISEMBEDDED As String ' dokumentowy skript
             ISPERSONAL As String ' wužiwarski skript
             ISSHARED As String ' makro LibreOffice
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED = "document" ' dokumentowy skript
                 .ISPERSONAL = "user" ' wužiwarske skripty
                 .ISSHARED = "share" ' makro LibreOffice
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Dwaj rozdźělnej modulej Python so wuwołujetej. Hodźitej so pak do aktualneho dokumenta zasadźić pak w datajowym systemje składować. Přepruwowanje argumentoweho typa so z přičinow přehladnosće přeskakuje:
Platform.py
         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import platform
          
         def computer_name() -> str:
             return platform.node()
          
         def OSname() -> str:
             return platform.system()
      Os/Path.py
         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import os.path
          
         def get_size(systemFilePath: str) -> str:
             return str(os.path.getsize(systemFilePath))
          
         def normalyze(systemPath: str) -> str:
             return os.path.normpath(systemPath)
      Wuwołanski mechanizm za priwatne abo zhromadnje wužite skripty Python je identiski z tym zasadźenych skriptow. Mjena bibliotekow so rjadowakam přirjaduja. Wobličenje systemowych šćežkow wužiwarskich profilow a zhromadnje wužitych modulow da so kaž w Posedźenske informacije wotwołać wopisane přewjesć. Pod rutinami OSName, HelloWorld a NormalizePath swoje pendanty Python wuwołuja, z pomocu horjeka naspomnjeneje funkcije GetPythonScript. Wobchadźenje z wuwzaćom detailěrowane njeje.
         Option Explicit
         Kompatibelne nastajenje ' Kajkosće so podpěruja
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Platformowe mjeno "Linux", "Darwin" abo "Windows"'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''Přikład za zhromadny LibreOffice Python'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Njetrjebawši wotrězk '\..' w šćežce'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      Do LibreOffice zasadźeny Python wjele standardnych bibliotekow wobsahuje, z kotrychž móžeće wužitk ćahnyć. Wobsahuja wjele funkcijow, mjez druhim:
argparse Parser za opcije přikazoweje linki, argumenty a podpřikazy
cmath Matematiske funkcije za kompleksne ličby
csv CSV-dataje čitać a pisać
datetime Woprawdźite datumowe a časowe typy
json Enkoder a dekoder JSON
math Matematiske funkcije
re Operacije z regularnymi wurazami
socket Syćowa tykačka niskeje runiny
sys Specifiske parametry a funkcije systema
unittest a trace Wokolina za testowanje jednotkow a slědowanje wuwjedźenjow Python
xml.etree.ElementTree API ElementTree XML