Pomoc za LibreOffice 24.8
Wuwołanje skriptow Python z makrow LibreOffice jo móžne, a wužytne funkcije su k dispoziciji, na pśikład:
Identifikacija ComputerName abo namakanje OSName stej móžnej,
Funkcija Basic FileLen()a com.sun.star.ucb.SimpleFileAccess. API-funkcija getSize() ma górnu granicu 2 gigabajtowu datajoweje wjelikosći, kótaruž Python wopytujo zmejstrowaś,
com.sun.star.util.PathSettings dajo se normalizěrowaś,
a wjele wěcej.
Pśiměrjony wobchad z LibreOffice Basic a z funkcijami zwězowańskego městna programěrowanja nałoženjow (API) se pśiraźijo, nježli až se wuwołanja mjazy rěcami wót Basic do Python, do JavaScript abo do drugeje skriptoweje rěcy wuwjadu.
Skripty Python mógu priwatne, wózjawjone abo do dokumentow zasajźone byś. Aby je wuwjadł, LibreOffice Basic městna skriptow Python trjeba. Pytanje za UNO-objektami, kótarež su kompatibelne z com.sun.star.script.provider.XScript wam zmóžnja, skripty Python wuwjasć:
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Skriptowy objekt Python se do wuwjeźenja wobstaraś
             ' Argumenty:
             ' Makro: ako "library/module.py$macro" abo "module.py$macro"
             ' Městno: ako "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 jo pólna wariabla
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Pód rutinami ComputerName a GetFilelen se jeju pendanta Python wuwołujotej, z pomocu do togo naspomnjeteje funkcije GetPythonScript. Wobchad z wuwześim njejo datailěrowane.
         Option Explicit
         Kompatibelne nastajenje ' Kakosći so pódpěraju
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Mě źěł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 wjelikosć 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žywaŕski 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žywaŕske skripty
                 .ISSHARED = "share" ' makro LibreOffice
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Dwa rozdźělnej modula Python se wuwołujotej. Dajotej se pak do aktualnego dokumenta zasajźiś pak w datajowem systemje składowaś. Pśeglědowanje argumentowego typa se z pśicynow pśeglědnosći pśeskokujo:
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łański mechanizm za priwatne abo zgromadnje wužyte skripty Python jo identiski z tym zasajźonych skriptow. Mjenja bibliotekow se zarědnikam pśirěduju. Woblicenje systemowych sćažkow wužywaŕskich profilow a zgromadnje wužytych modulow dajo se ako w Pósejźeńske informacije wótwołaś wopisane pśewjasć. Pód rutinami OSName, HelloWorld a NormalizePath swóje pendanty Python wuwołuju, z pomocu górjejce naspomnjeteje funkcije GetPythonScript. Wobchad z wuwześim njejo detailěrowane.
         Option Explicit
         Kompatibelne nastajenje ' Kakosći se pódpěraju
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Platformowe mě "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 zgromadny 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
             '''Wuzbytny wótrězk '\..' w sćažce'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      Do LibreOffice zasajźony Python wjele standardnych bibliotekow wopśimujo, z kótarychž móžośo wužytk měś. Wopśimuju wjele funkcijow, mjazy drugim:
argparse Parser za opcije pśikazoweje smužki, argumenty a pódpśikaze
cmath Matematiske funkcije za kompleksne licby
csv CSV-dataje cytaś a pisaś
datetime Cyste datumowe a casowe typy
json Encoder a decoder JSON
math Matematiske funkcije
re Operacije z regularnymi wurazami
socket Seśowe zwězowańske městno niskeje rowniny
sys Specifiske parametry a funkcije systema
unittest a trace Wokolina za testowanje jadnotkow a slědowanje wuwjeźenjow Python
xml.etree.ElementTree API ElementTree XML