Guida di LibreOffice 25.2
Il servizio ScriptForge.Basic propone una raccolta di metodi di LibreOffice Basic da eseguire in ambiente Python. I metodi del servizio Basic riproducono esattamente la sintassi e il comportamento delle funzioni incorporate in Basic.
Esempio tipico:
   bas.MsgBox('Visualizza questo testo in un riquadro di dialogo da un script Python')
  L'uso del servizio ScriptForge.Basic è limitato agli script in Python.
Prima di usare il servizio Basic, importate il metodo CreateScriptService() dal modulo scriptforge:
    from scriptforge import CreateScriptService
    bas = CreateScriptService("Basic")
  | Nome | Sola lettura | Tipo | Descrizione | 
|---|---|---|---|
| MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL | Sì | Integer | Valori: 0, 1, 5, 4, 3 | 
| MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP | Sì | Integer | Valori: 48, 64, 32, 16 | 
| MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3 | Sì | Integer | Valori: 2, 128, 256, 512 | 
| IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES | Sì | Integer | Valori: 3, 2, 5, 7, 1, 4, 6 | 
| StarDesktop | Sì | Oggetto | Restituisce l'oggetto StarDesktop che rappresenta l'applicazione LibreOffice. | 
| ThisComponent | Sì | Oggetto | Se il componente attuale fa riferimento a un documento di LibreOffice, questo metodo restituisce l'oggetto UNO che rappresenta in documento. Questa proprietà restituisce None quando il componente corrente non corrisponde a un documento. | 
| ThisDatabaseDocument | Sì | Oggetto | Se lo script è stato eseguito da un documento di Base o da uno qualsiasi dei suoi sottocomponenti questo metodo restituisce il componente principale dell'istanza di Base. Altrimenti questa proprietà restituisce None. | 
Converte un'espressione numerica o una stringa in un oggetto nativo di Python datetime .datetime.
Questo metodo rende accessibile agli script in Python la funzione incorporata in Basic CDate.
svc.CDate(expression: any): obj
espressione: un'espressione numerica o una stringa che rappresenta una data.
    d = bas.CDate(1000.25)
    bas.MsgBox(str(d)) # 1902-09-26 06:00:00
    bas.MsgBox(d.year) # 1902
  Converte la rappresentazione di una data/orario di un oggetto UNO in un oggetto datetime.datetime nativo in Python.
svc.CDateFromUnoDateTime(unodate: uno): obj
unodate: un oggetto data/ora della libreria UNO di uno dei seguenti tipi: com.sun.star.util.DateTime, com.sun.star.util.Date o com.sun.star.util.Time
L'esempio seguente crea un oggetto com.sun.star.util.DateTime e lo converte in un oggetto datetime.datetime di Python.
    uno_date = bas.CreateUnoStruct('com.sun.star.util.DateTime')
    uno_date.Year = 1983
    uno_date.Month = 2
    uno_date.Day = 23
    new_date = bas.CDateFromUnoDateTime(uno_date)
    bas.MsgBox(str(new_date)) # 1983-02-23 00:00:00
  Converte la rappresentazione di una data in un oggetto com.sun.star.util.DateTime.
svc.CDateToUnoDateTime(date: obj): uno
data: un oggetto data/orario in Python di uno dei seguenti tipi: datetime.datetime, datetime.date, datetime.time, float (time.time) o time.struct_time.
    from datetime import datetime
    current_datetime = datetime.now()
    uno_date = bas.CDateToUnoDateTime(current_datetime)
    bas.MsgBox(str(uno_date.Year) + "-" + str(uno_date.Month) + "-" + str(uno_date.Day))
  Restituisce il percorso di sistema di un determinato file file: URL.
svc.ConvertFromUrl(url: str): str
url: l'URL assoluto del file.
Il nome di un percorso di sistema per il file.
    filename = bas.ConvertFromUrl( "file:///C:/Program%20Files%20(x86)/LibreOffice/News.txt")
    bas.MsgBox(filename)
  Restituisce un URL file: per il percorso di sistema specificato.
svc.ConvertToUrl(systempath: str): str
systempath: un nome di sistema per il file in formato stringa.
L'URL del file: in formato stringa.
    url = bas.ConvertToUrl( 'C:\Program Files(x86)\LibreOffice\News.txt')
    bas.MsgBox(url)
  Crea un'istanza di un servizio UNO con il ProcessServiceManager.
svc.CreateUnoService(servicename: str): uno
servicename: il nome completo e qualificato di un servizio come com.sun.star.ui.dialogs.FilePicker o com.sun.star.sheet.FunctionAccess.
    dsk = bas.CreateUnoService('com.sun.star.frame.Desktop')
  Restituisce un'istanza di una struttura UNO del tipo specificato.
svc.CreateUnoStruct(unostructure: str): uno
unostructure: un nome di struttura valido come com.sun.star.beans.Property o com.sun.star.util.DateTime.
    date_struct = CreateUnoStruct('com.sun.star.util.DateTime')
  Aggiunge un intervallo a una data od ora per un determinato numero di volte e restituisce la data risultante.
svc.DateAdd(interval: str, number: num, date: datetime): datetime
intervallo: un'espressione in formato stringa della seguente tabella, che specifica l'intervallo della data o dell'orario.
numero: un'espressione numerica che specifica con quale frequenza il valore dell'intervallo verrà aggiunto se positivo, o sottratto se negativo.
date: un valore inserito di tipo datetime.datetime, il valore interval sarà aggiunto per il numero number di volte a questo valore datetime.datetime.
Un valore di tipo datetime.datetime.
    dt = datetime.datetime(2004, 1, 31)
    dt = bas.DateAdd("m", 1, dt)
    print(dt)
  Restituisce il numero di intervalli di data od ora che trascorrono tra i due valori di data/ora indicati.
svc.DateDiff(interval: str, date1: datetime, date2: datetime, firstdayofweek = 1, firstweekofyear = 1): int
interval: un'espressione in formato stringa che specifica l'intervallo tra date, come meglio dettagliato nel metodo DateAdd sopra indicato.
date1, date2: i due valori datetime.datetime da confrontare.
Un numero.
    date1 = datetime.datetime(2005,1, 1)
    date2 = datetime.datetime(2005,12,31)
    diffDays = bas.DateDiff('d', date1, date2)
    print(diffDays)
  La funzione DatePart restituisce la parte specificata di una data.
svc.DatePart(interval: str, date: datetime, firstdayofweek = 1, firstweekofyear = 1): int
interval: un'espressione in formato stringa che specifica l'intervallo tra date, come meglio dettagliato nel metodo DateAdd sopra indicato.
data - La data/ora dalla quale viene calcolato il risultato.
firstdayofweek, firstweekofyear: parametri opzionali che specificano rispettivamente il giorno di inizio della settimana e la prima settimana dell'anno, come meglio dettagliato in precedenza per il metodo DateDiff.
La parte estratta dalla data/ora specificata.
    print(bas.DatePart("ww", datetime.datetime(2005,12,31)
    print(bas.DatePart('q', datetime.datetime(1999,12,30)
  Calcola il valore di una data da una stringa che rappresenta una data.
svc.DateValue(date: str): datetime
La data calcolata.
    dt = bas.DateValue("23-02-2011")
    print(dt)
  Converte un numero in una stringa e la formatta in base al formato specificato.
svc.Format(expression: any, format = ''): str
    txt = bas.Format(6328.2, '##.##0.00')
    print(txt)
  Restituisce il contesto predefinito della fabbrica di servizio del processo, se esiste, diversamente restituisce un riferimento nullo.
GetDefaultContext è un'alternativa al metodo getComponentContext() disponibile nella variabile globale XSCRIPTCONTEXT o dal modulo uno.py.
svc.GetDefaultContext(): uno
Viene utilizzato il contesto del componente predefinito, quando s'istanziano dei servizi tramite XMultiServiceFactory. Per maggiori informazioni, vedete il capitolo Professional UNO della Guida per gli sviluppatori api.libreoffice.org.
    ctx = bas.GetDefaultContext()
  Restituisce un valore numerico che specifica l'interfaccia grafica. Questa funzione viene fornita solamente per retrocompatibilità con le versioni precedenti.
Fate riferimento al metodo system() del modulo platform di Python per identificare il sistema operativo.
svc.GetGuiType(): int
    n = bas.GetGuiType()
  Restituisce il separatore di directory dipendente dal sistema operativo utilizzato per specificare i percorsi dei file.
Usate os.pathsep dal modulo os di Python per identificare il separatore usato nei percorsi.
svc.GetPathSeparator(): str
    sep = bas.GetPathSeparator()
  Restituisce il numero di tick (ticchettii) forniti dal sistema operativo. Potete usare questa funzione per ottimizzare alcuni processi. Usate questo metodo per stimare il tempo in millisecondi:
svc.GetSystemTicks(): int
    ticks_ini = bas.GetSystemTicks()
    time.sleep(1)
    ticks_end = bas.GetSystemTicks()
    bas.MsgBox("{} - {} = {}".format(ticks_end, ticks_ini,ticks_end - ticks_ini))
  Restituisce l'oggetto UNO che contiene tutte le librerie e moduli condivisi con Basic.
Questo metodo è l'equivalente in Python di GlobalScope.BasicLibraries degli script in Basic.
svc.GlobalScope.BasicLibraries(): uno
com.sun.star.script.XLibraryContainer
Il seguente esempio carica la libreria Gimmicks di Basic, se questa non è già caricata.
    libs = bas.GlobalScope.BasicLibraries()
    if not libs.isLibraryLoaded("Gimmicks"):
        libs.loadLibrary("Gimmicks")
  Restituisce l'oggetto UNO che contiene tutte le librerie condivise con finestre di dialogo.
Questo metodo è l'equivalente in Python di GlobalScope.DialogLibraries degli script in Basic.
svc.GlobalScope.DialogLibraries(): uno
com.sun.star.comp.sfx2.DialogLibraryContainer
Il seguente esempio mostra una finestra di dialogo con i nomi di tutte le librerie contenenti finestre di dialogo.
    dlg_libs = bas.GlobalScope.DialogLibraries()
    lib_names = dlg_libs.getElementNames()
    bas.MsgBox("\n".join(lib_names))
  svc.InputBox(prompt: str, [title: str], [default: str], [xpostwips: int, ypostwips: int]): str
String
    txt = s.InputBox('Inserisci una frase:', "Caro/a utente")
    s.MsgBox(txt, s.MB_ICONINFORMATION, "Conferma della frase")
  Per informazioni più approfondite fate riferimento alla pagina wiki Input e Output sullo schermo usando Python (in inglese).
Visualizza un riquadro di dialogo contenente un messaggio e restituisce un valore opzionale.
Le costanti MB_xx specificano il tipo di finestra di dialogo, il numero e il tipo di pulsanti da visualizzare e anche il tipo di icona. Aggiungendo i loro rispettivi valori si crea la sequenza di bit, che definisce l'aspetto del riquadro di dialogo MsgBox.
bas.MsgBox(prompt: str, [buttons: int], [title: str])[: int]
Un numero intero opzionale, come dettagliato in precedenza nelle proprietà IDxx.
Restituisce la data e ora corrente del sistema come oggetto datetime.datetime nativo di Python.
svc.Now(): datetime
    bas.MsgBox(bas.Now(), bas.MB_OK, "Now")
  Restituisce un valore intero per il colore formato dai componenti rosso, verde e blu.
svc.RGB(red:int, green: int, blue: int): int
Integer
    YELLOW = bas.RGB(255,255,0)
  Ispeziona oggetti e variabili UNO.
svc.Xray(obj: any)
obj: una variabile o un oggetto UNO.
    bas.Xray(bas.StarDesktop)