Aide LibreOfficeDev 25.8
L'appel de scripts Python à partir de macros LibreOfficeDev Basic est possible et des fonctionnalités précieuses peuvent être obtenues telles que :
L'identification ComputerName ou la détection de OSName sont possibles,
La fonction Basic FileLen() et com.sun.star.ucb.SimpleFileAccess.La fonction API getSize() présenter une limite supérieure de taille de fichier de 2 gigaoctets que Python aide à surmonter,
com.sun.star.util.PathSettings peut être normalisé,
et bien plus.
Une exposition raisonnable à LibreOfficeDev Basic et aux Interface de programmation d'application (API) est recommandée avant d'effectuer les inter-appels linguistiques de Basic à Python, à JavaScript ou à tout autre moteur de script.
Les scripts Python peuvent être personnels, partagés ou intégrés aux documents. Afin de pouvoir les exécuter, LibreOfficeDev Basic doit être fourni avec des emplacements de script Python. Localiser les objets UNO conformes à l'interface com.sun.star.script.provider.XScript permet l'exécution des scripts Python :
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Récupérer l'objet de script Python avant l'exécution
             ' Arguments :
             'macro : comme "library/module.py$macro" ou "module.py$macro"
             'emplacement : comme "document", "share", "user" ou ENUM(eration)
             ' Résultat :
             ' situé le service 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 ' com.sun.star.script.provider.XScriptProvider compatible
             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 est une matrice
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Les routines ComputerName et GetFilelensont appelées par leurs contreparties Python, en utilisant la fonction GetPythonScript susmentionnée. La gestion des exceptions n'est pas détaillée.
         Option Explicit
         Les propriétés de Option Compatible' sont prises en charge
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Workstation name'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''File size in bytes'''
             scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
             GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
         End Function ' GetFilelen
             
         Private Type _SCRIPT_LOCATION
             Script du document ISEMBEDDED As String '
             Script de l'utilisateur ISPERSONAL As String '
             Macro LibreOfficeDev ISSHARED As String '
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 Script du document .ISEMBEDDED = "document" '
                 Scripts de l'utilisateur .ISPERSONAL = "user" '
                 Macro LibreOfficeDev .ISSHARED = "share" '
             End If : End With ' enums
             Script = enums
         End Function ' Script
      Deux modules Python différents sont appelés. Ils peuvent être intégrés dans le document actif ou être stockés dans le système de fichier. La vérification du type d'argument est ignorée pour plus de clarté :
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)
      Le mécanisme d'appel pour les scripts Python partagés ou personnels est identique à celui des scripts intégrés. Les noms de bibliothèque sont mappés aux dossiers. Le calcul du profil utilisateur LibreOfficeDev et des chemins d'accès aux fichiers système des modules partagés peut être effectué comme indiqué dans Obtenir les informations de session. Les routines OSName, HelloWorld et NormalizePath ci-dessous, appellent leurs homologues Python, en utilisant la fonction GetPythonScript susmentionnée. La gestion des exceptions n'est pas détaillée.
         Option Explicit
         Les propriétés Option Compatible ' sont prises en charge
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Les noms des plateformes sont "Linux", "Darwin" ou "Windows"'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''Échantillon partagé LibreOfficeDev Python'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Supprimez le '\ ..' superflu dans le chemin'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      Le LibreOfficeDev Python embarqué contient de nombreuses bibliothèques standards dont vous pouvez bénéficier. Elles portent un ensemble complet de fonctionnalités, telles que mais sans s'y limiter :
argparse Analyseur pour les options de lignes de commande, les arguments et les sous-commandes
cmath Fonctions mathématiques pour les nombres complexes
csv Pour écrire et lire des fichiers CSV
datetime Véritables types de date et d'heure
json Encodeur et décodeur JSON
math Fonctions mathématiques
re Opérations d'expressions régulières
socket Interface réseau de bas niveau
sys Fonctions et paramètres spécifiques au système
unittest et trace Cadre de test unitaire et exécution de Track Python
xml.etree.ElementTree API XML ElementTree