Pomoč LibreOfficeDev 7.6
Skripte Python lahko kličete iz makrov LibreOfficeDev Basic, s čimer pridobite pomembne funkcionalnosti, kot so:
možna je identifikacija imena računalnika (ComputerName) in operacijskega sistema (OSName),
funkcija Basic FileLen() in funkcija API com.sun.star.ucb.SimpleFileAccess.getSize() imata zgornjo mejo velikosti datotek 2 Gb, ki jo s Pythonom lahko zaobidete,
normalizirate lahko com.sun.star.util.PathSettings
in številne druge.
Priporočljivo je, da se dobro spoznate z jezikom LibreOfficeDev Basic in vmesnikom Application Programming Interface (API), preden se iz skripte v Basicu sklicujete na Python, JavaScript ali drug skriptni mehanizem.
Skripti Python so lahko zasebni, v skupni rabi ali vdelani v dokumente. Da bi jih izvajali, mora LibreOfficeDev Basic poznati lokacije skriptov Python. Izvajanje skriptov Python omogočite z iskanjem predmetov UNO, ki so skladni z vmesnikom com.sun.star.script.provider.XScript:
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Zagrabi predmet skripta Python pred izvajanjem
             ' Argumenti:
             '    macro/makro   : kot "library/module.py$macro" ali "module.py$macro"
             '    location/mesto: kot "document", "share", "user" ali ENUM(eration/oštevilčenje)
             ' Rezultat:
             '    locirana UNO-storitev com.sun.star.script.provider.XScript'''
             If IsMissing(location) Then location = "user"
             Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
             Dim sp As Object ' Združljivo s 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())
imeOpSistema = script.invoke(Array(), in_outs, Array()) ' in_outs je matrika
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Spodnji rutini ComputerName in GetFilelen kličeta svoja ekvivalenta v Pythonu z uporabo prej omenjene funkcije GetPythonScript. Izjeme niso podrobno obravnavane.
         Option Explicit
         Option Compatible ' Lastnosti so podprte
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Ime delovne postaje'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''Velikost datoteke v bajtih'''
             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 ' skript iz dokumenta
             ISPERSONAL As String ' skript uporabnika
             ISSHARED As String ' Makro LibreOfficeDev
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED As String ' skript iz dokumenta
                 .ISPERSONAL = "user" ' skripti uporabnika
                 .ISSHARED = "share" ' Makro LibreOfficeDev
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Klicana sta dva različna modula Python. Lahko sta vdelana v trenutni dokument ali shranjena v datotečnem sistemu. Preverjanje vrste argumentov je zavoljo jasnosti preskočeno:
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)
      Mehanizem za klicanje zasebnih ali skupnih skriptov Python je identičen tistemu za vdelane skripte. Imena knjižnic se preslikajo v mape. Izračun uporabniškega profila LibreOfficeDev in datotečnih poti do modulov v skupni rabi je možno opraviti po navodilih Pridobivanje informacij o seji. Spodnji podprogrami OSName, HelloWorld in NormalizePath kličejo svoje ekvivalente v Pythonu z uporabo prej omenjene funkcije GetPythonScript. Izjeme niso podrobno obravnavane.
         Option Explicit
         Option Compatible ' Lastnosti so podprte
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Ime platforme kot »Linux«, »Darwin« ali »Windows«'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''Vzorec LibreOfficeDev Python v skupni rabi'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Odstrani odvečne '\..' v poti'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      V LibreOfficeDev vdelani Python vsebuje številne standardne knjižnice, ki so vam lahko v pomoč, saj obsegajo bogat nabor funkcij, kot so:
argparse Razčlenjevalnik možnosti, argumentov in podukazov ukazne vrstice
cmath Matematične funkcije s kompleksnimi števili
csv Branje in pisanje datotek CSV
datetime Prave vrste datuma in časa
json Kodirnik in dekodirnik JSON
math Matematične funkcije
re Operacije regularnih izrazov
socket Omrežni vmesnik nižje ravni
sys Sistemski parametri in funkcije
unittest in trace Ogrodje preizkušanja enot in sledenja izvajanja Pythona
xml.etree.ElementTree API XML ElementTree