LibreOffice 25.2 laguntza
Posible da Python scriptak deitzea LibreOffice Basic makroetatik, eta horrela eginbide erabilgarriak eskuratu daitezke, adibidez:
posible dira ComputerName identifikazioa edo OSName detekzioa,
Basic FileLen() funtzioak eta com.sun.star.ucb.SimpleFileAccess.getSize() API funtzioak 2 gigabyteko gehieneko fitxategi-tamaina dute, eta Pythonek hori gainditzen laguntzen du,
com.sun.star.util.PathSettings normalizatua izan daiteke,
eta askoz gehiago.
LibreOffice Basic eta Application Programming Interface (API) nahiko ongi ezagutzea komeni da lengoaien arteko deiak (Basic lengoaiatik Pythonera, JavaScriptera edo beste edozein script-lengoaiara) egin baino lehen.
Python scriptak pertsonalak, partekatuak edo dokumentuetan kapsulatuak izan daitezke. Haiek exekutatzeko, Python scripten kokalekuak esan behar zaizkio LibreOffice Basic-i. com.sun.star.script.provider.XScript interfazearekin bat datozen UNO objektuak lokalizatuta, Python scriptak exekutatu daitezke:
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Hartu Python script objektua exekuzioa baino lehen
             ' Argumentuak:
             '    macro   : "library/module.py$macro" edo "module.py$macro" modura
             '    location: "document", "share", "user" ENUM(eration) modura
             ' Emaitza:
             '    com.sun.star.script.provider.XScript UNO service''' aurkitu da
             If IsMissing(location) Then location = "user"
             Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
             Dim sp As Object ' com.sun.star.script.provider.XScriptProvider bateragarria
             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(Array(), in_outs, Array()) ' in_out matrize bat da
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Azpiko ComputerName eta GetFilelen errutinak beren pareko Python scriptei deitzen ari dira, goian aipatutako GetPythonScript funtzioa erabilita. Salbuespenen maneiua ez dago azalduta.
         Option Explicit
         Option Compatible ' Propietateak onartzen dira
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Lan-estazioaren izena'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''Fitxategi-tamaina bytetan'''
             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 ' dokumentu-scripta
             ISPERSONAL As String ' erabiltzaile-scripta
             ISSHARED As String ' LibreOffice makroa
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED = "document" ' dokumentu-scripta
                 .ISPERSONAL = "user" ' erabiltzaile-scriptak
                 .ISSHARED = "share" ' LibreOffice makroa
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Bi Python modulu desberdin deituko dira. Uneko dokumentuan kapsulatuta egon daitezke edo fitxategi-sisteman biltegiratuta egon daitezke. Argumentu motaren egiaztatzea ez da erakusten, adibidea argiago erakusteko:
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)
      Python script pertsonal edo partekatuetarako deitze-mekanismoa kapsulatutako scripten bera da. Liburutegi-izenak karpetekin mapatuta daude. LibreOffice erabiltzaile-profila eta partekatutako moduluen sistemako fitxategi-bideak Saioaren informazioa eskuratzea atalean azaldutako moduan kalkulatu daitezke. Azpiko OSName, HelloWorld eta NormalizePath errutinak beren parekoak diren Python scriptak deitzen ari dira, goian aipatutako GetPythonScript funtzioa erabilita. Salbuespenen maneiua ez dago azalduta.
         Option Explicit
         Option Compatible ' Propietateak onartzen dira
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Plataforma-izena: "Linux", "Darwin" edo "Windows"'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''LibreOffice Python lagin partekatua'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Kendu soberan dauden '\..' bide-izenetik'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      LibreOffice suitearekin kapsulatutako Pythonek liburutegi estandar asko ditu lanerako. Eginbideen multzo aberatsa du, adibidez honakoak:
argparse analizatzailea komando-lerroko aukeretarako, argumentuetarako eta azpikomandoetarako
cmath Funtzio matematikoak zenbaki konplexuetarako
csv CSV fitxategiak irakurtzea eta idaztea
datetime Benetako data eta ordu motak
json JSON kodetzailea eta deskodetzailea
math Funtzio matematikoak
re Adierazpen erregularren eragiketak
socket Maila baxuko sare-interfazea
sys Sistemarenak espezifikoak diren parametroak eta funtzioak
unittest eta trace Unitate-proben lan-markoa eta Python exekuzioaren segimendua
xml.etree.ElementTree ElementTree XML APIa