Guida di LibreOffice 25.2
È possibile richiamare script Python dalle LibreOffice macro di Basic e ottenere valide funzioni, come ad esempio:
la possibilità di identificazione ComputerNameo di rilevazione OSName
le funzioni Basic FileLen() e API com.sun.star.ucb.SimpleFileAccess.getSize() presentano un limite superiore di dimensione del file di 2 Gigabyte che Python consente di superare,
la possibilità di normalizzazione di com.sun.star.util.PathSettings
e molte altre ancora.
È consigliabile un adeguato approccio a LibreOffice Basic e ad Application Programming Interface (API) prima di eseguire funzioni di chiamata tra linguaggi Basic, Python, JavaScript o qualsiasi altro motore di script.
Gli script Python possono essere personali, condivisi o incorporati nei documenti. Per poterli eseguire, LibreOffice Basic deve disporre della posizione degli script Python. L'individuazione di oggetti UNO compatibili con l'interfaccia com.sun.star.script.provider.XScript consente l'esecuzione di script Python:
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Recupera l'oggetto di script Python prima dell'esecuzione
             ' Argomenti:
             '    macro   : come "library/module.py$macro" o "module.py$macro"
             '    location: come "document", "share", "user" o ENUM(eration)
             ' Risultato:
             '    individuato il servizio di UNO 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 ' compatibile con 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(Array(), in_outs, Array()) ' in_out è una matrice
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Le routine seguenti ComputerName e GetFilelen richiamano le corrispondenti controparti Python mediante la funzione GetPythonScript precedentemente menzionata. La gestione delle eccezioni non è dettagliata.
         Option Explicit
         Option Compatible ' Sono supportate le proprietà
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Nome Workstation'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''Dimensione file in byte'''
             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 ' script documento
             ISPERSONAL As String ' script utente
             ISSHARED As String ' macro di LibreOffice
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED = "document" ' script documento
                 .ISPERSONAL = "user" ' script utente
                 .ISSHARED = "share" ' macro di LibreOffice
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Vengono richiamati due diversi moduli Python. Possono essere incorporati nel documento corrente o memorizzati nel file system. Il controllo del tipo di argomento per chiarezza viene tralasciato:
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)
      Il meccanismo di chiamata per script Python personali o condivisi è identico a quello degli script incorporati. I nomi delle librerie sono mappati in cartelle. L'elaborazione del profilo utente LibreOffice e dei percorsi dei file di sistema relativi ai moduli condivisi si possono eseguire come descritto in Ottenere informazioni sulla sessione. Le routine seguenti OSName, HelloWorld e NormalizePath richiamano le corrispondenti controparti Python mediante la funzione GetPythonScript precedentemente menzionata. La gestione delle eccezioni non è dettagliata.
         Option Explicit
         Option Compatible ' Sono supportate le proprietà
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Nome piattaforma come "Linux", "Darwin" o "Windows"'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''Esempio condiviso Python di LibreOffice'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Estrae le '\..' superflue nel percorso'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      I moduli Python incorporati in LibreOffice contengono molte librerie standard da cui trarre vantaggio. Offrono una ricca gamma di funzioni, comprese, ma non esclusivamente, le seguenti:
argparse Analizzatore per opzioni a riga di comando, argomenti e sottocomandi
cmath Funzioni matematiche per numeri complessi
csv Lettura e scrittura di file CSV
datetime Tipi di data e ora di base
json Codificatore e decodificatore JSON
math Funzioni matematiche
re Operazioni di espressione regolare
socket Interfaccia di rete di basso livello
sys Parametri e funzioni specifiche del sistema
unittest e trace Unit testing framework e Track Python execution
xml.etree.ElementTree API ElementTree XML