Tenesta ScriptForge.Basic

The ScriptForge.Basic service proposes a collection of LibreOffice Basic methods to be executed in a Python context. Basic service methods reproduce the exact syntax and behaviour of Basic builtin functions.

note

Denne tenesta er tilgjengeleg frå LibreOffice 7.2 og høgare.


Typisk eksempel:


   svc.MsgBox('Dette vert vist i ein meldingsboks')
  
warning

Tenesta ScriptForge.Basic er avgrensa til Python-skript.


Oppkall av tenester

Before using the Basic service, import the CreateScriptService() method from the scriptforge module:


    from scriptforge import CreateScriptService
    svc = CreateScriptService("Basic")
  

Eigenskapar

Namn

Skriveverna

Type

Skildring

MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL

Ja

heiltal

Verdiar: 0, 1, 5, 4, 3

MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP

Ja

heiltal

Verdiar: 48, 64, 32, 16

MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3

Ja

heiltal

Verdiar: 2, 128, 256, 512

IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES

Ja

heiltal

Verdiar: 3, 2, 5, 7, 1, 4, 6
Konstantar som peikar på den valde knappen i MsgBox.

StarDesktop

Ja

UNO
objekt

StarDesktop object represents LibreOffice Start Center.


List of Methods in the Basic Service

CDate
CDateFromUnoDateTime
CDateToUnoDateTime
ConvertFromUrl
ConvertToUrl
CreateUnoService
DateAdd
DateDiff
DatePart

DateValue
Format
GetDefaultContext
GetGuiType
GetPathSeparator
GetSystemTicks
GlobalScope.BasicLibraries
GlobalScope.DialogLibraries
InputBox

MsgBox
Now
RGB
ThisComponent
ThisDatabaseDocument
Xray




CDate

Konverterer eit numerisk uttrykk eller ein streng til eit standard datetime.datetime Python-objekt.

note

This method exposes the Basic builtin function CDate to Python scripts.


Syntaks:

svc.CDate(expression: any): obj

Parametrar:

expression: a numeric expression or a string representing a date.

Når du konverterer eit strenguttrykk, må dato og klokkeslett skrivast inn anten i eitt av dei formata som er definert for språket du brukar (sjå → Språkinnstillingar → Språk) eller i eit ISO datoformat (for tida er berre ISO-formatet med doble hermeteikn gyldig, for eksempel "2012-12-31"). I taluttrykk representerer verdiane til venstre for desimalteiknet datoen med start frå 31. desember 1899. Verdiane til høgre for desimalteiknet representerer klokkeslettet.

Eksempel:


    d = svc.CDate(1000.25)
    svc.MsgBox(str(d)) # 1902-09-26 06:00:00
    svc.MsgBox(d.year) # 1902
  

CDateFromUnoDateTime

Converts a UNO date/time representation to a datetime.datetime Python native object.

Syntaks:

svc.CDateFromUnoDateTime(unodate: uno): obj

Parametrar:

unodate: A UNO date/time object of one of the following types: com.sun.star.util.DateTime, com.sun.star.util.Date or com.sun.star.util.Time

Eksempel:

The following example creates a com.sun.star.util.DateTime object and converts it to a datetime.datetime Python object.


    import uno
    uno_date = uno.createUnoStruct('com.sun.star.util.DateTime')
    uno_date.Year = 1983
    uno_date.Month = 2
    uno_date.Day = 23
    new_date = svc.CDateFromUnoDateTime(uno_date)
    svc.MsgBox(str(new_date)) # 1983-02-23 00:00:00
  

CDateToUnoDateTime

Converts a date representation into a com.sun.star.util.DateTime object.

Syntaks:

svc.CDateToUnoDateTime(date: obj): uno

Parametrar:

date: A Python date/time object of one of the following types: datetime.datetime, datetime.date, datetime.time, float (time.time) or time.struct_time.

Eksempel:


    from datetime import datetime
    current_datetime = datetime.now()
    uno_date = svc.CDateToUnoDateTime(current_datetime)
    svc.MsgBox(str(uno_date.Year) + "-" + str(uno_date.Month) + "-" + str(uno_date.Day))
  

ConvertFromUrl

Returns a system path file name for the given file: URL.

Syntaks:

svc.ConvertFromUrl(url: str): str

Parametrar:

url: An absolute file: URL.

Returverdi:

A system path file name.

Eksempel:


    filename = svc.ConvertFromUrl( "file:///C:/Program%20Files%20(x86)/LibreOffice/News.txt")
    svc.MsgBox(filename)
  

ConvertToUrl

Returns a file: URL for the given system path.

Syntaks:

svc.ConvertToUrl(systempath: str): str

Parametrar:

systempath: A system file name as a string.

Returverdi:

A file: URL as a string.

Eksempel:


    url = svc.ConvertToUrl( 'C:\Program Files(x86)\LibreOffice\News.txt')
    svc.MsgBox(url)
  

CreateUnoService

Instantiates a UNO service with the ProcessServiceManager.

Syntaks:

svc.CreateUnoService(servicename: str): uno

Parametrar:

servicename : A fully qualified service name such as "com.sun.star.ui.dialogs.FilePicker" or 'com.sun.star.sheet.FunctionAccess'.

Eksempel:


    dsk = svc.CreateUnoService('com.sun.star.frame.Desktop')
  

DateAdd

Adds a date or time interval to a given date/time a number of times and returns the resulting date.

Syntaks:

svc.DateAdd(interval: str, number: num, date: datetime): datetime

Parametrar:

interval: A string expression from the following table, specifying the date or time interval.

interval (strengverdi)

Forklaring

yyyy

År

q

Kvarter

m

Månad

y

Dagen i året

w

Vekedag

ww

Veke i året

d

Dag

h

Time

n

Minutt

s

Sekund


number: A numerical expression specifying how often the interval value will be added when positive or subtracted when negative.

date: A given datetime.datetime value, the interval value will be added number times to this date/time value.

Returverdi:

A datetime.datetime value.

Eksempel:


    dt = datetime.datetime(2004, 1, 31)
    dt = svc.DateAdd("m", 1, dt)
    print(dt)
  

DateDiff

Returns the number of date or time intervals between two given date/time values.

Syntaks:

svc.DateDiff(interval: str, date1: datetime, date2: datetime, firstdayofweek = 1, firstweekofyear = 1): int

Parametrar:

interval: A string expression specifying the date interval, as detailed in above DateAdd method.

date1, date2: The two datetime.datetime values to be compared.

firstdayofweek ‒ Ein valfri parameter som bestemmer første dagen i veka.

firstdayofweek-verdi

Forklaring

0

Bruk standardverdien frå systemet

1

Søndag (standard)

2

Måndag

3

Tysdag

4

Onsdag

5

Torsdag

6

Fredag

7

Laurdag


firstweekofyear ‒ Ein valfri parameter som bestemmer den første veka i eit år.

firstweekofyear-verdi

Forklaring

0

Bruk standardverdien frå systemet

1

Veke 1 er den veka som inneheld 1. januar 8standard)

2

Veke 1 er den første veka dette året som inneheld fire eller fleire dagar

3

Veke 1 er den første veka som inneheld dagar berre frå det nye året


Returverdi:

A number.

Eksempel:


    date1 = datetime.datetime(2005,1, 1)
    date2 = datetime.datetime(2005,12,31)
    diffDays = svc.DateDiff('d', date1, date2)
    print(diffDays)
  

DatePart

The DatePart function returns a specified part of a date.

Syntaks:

svc.DatePart(interval: str, date: datetime, firstdayofweek = 1, firstweekofyear = 1): int

Parametrar:

interval: A string expression specifying the date interval, as detailed in above DateAdd method.

date: The date/time from which the result is calculated.

firstdayofweek, firstweekofyear: optional parameters that respectively specify the starting day of a week and the starting week of a year, as detailed in above DateDiff method.

Returverdi:

The extracted part for the given date/time.

Eksempel:


    print(svc.DatePart("ww", datetime.datetime(2005,12,31)
    print(svc.DatePart('q', datetime.datetime(1999,12,30)
  

DateValue

Computes a date value from a date string.

Syntaks:

svc.DateValue(date: str): datetime

Parametrar:

Dato: Strenguttrykk som inneheld datoen du vil rekna ut. I motsetnad til funksjonen DateSerial som gjev tilbake år, månadar og dagar som skilde numeriske verdiar, krev funksjonen DateValue at datostrengen samsvarar med eit datogjenkjenningsmønster som er definert for dei lokale innstillingane som er brukte (sjå → Språkinnstillingar → Språk)eller ISO-datoformatet (for tida vert berre ISO-format med bindestrekar, for eksempel «2012-12-31» godtekne).

Returverdi:

The computed date.

Eksempel:


    dt = svc.DateValue("23-02-2011")
    print(dt)
  

Format

Converts a number to a string, and then formats it according to the format that you specify.

Syntaks:

svc.Format(expression: any, format = ''): str

Parametrar:

uttrykk: Taluttrykket som skal konverterast til ein formatert streng.

format: Streng med formatkoden for talet. Viss format er sløyfa, verkar format-funksjonen på same måten som LibreOffice Basic-funksjonen Str().

Returverdi:

Tekststreng.

Formatting Codes

Lista nedanfor viser kodane som kan nyttast for å formatera eit taluttrykk:

0: Viss uttrykk har eit siffer der 0 er plassert i formatkoden, vert sifferet vist, elles vert det vis ein 0.

Viss uttrykk har færre siffer enn talet på nullar i formatkoden, (på begge sider av desimalteiknet), vert leiande eller avsluttande nullar viste. Viss uttrykk har fleire siffer til venstre for desimalteiknet enn formatkoden har, vert dei overskytande sifra viste utan formatering.

Desimalplassar i uttrykkt vert avrunda i høve til talet på nullar som kjem etter desimalteiknet i Format-koden.

#: Viss uttrykk har eit siffer der #-plasshaldaren er plassert i formatkoden, vert sifferet vist, elles ingenting.

Dette symbolet verkar på same måten som 0, utanom at leiande og avsluttande nullar ikkje vert viste viss det er fleire #-teikn i formatkoden enn siffer i uttrykk. Berre dei relevante sifra i uttrykk vert viste.

.: Plasshaldaren for desimalteiknet bestemmer talet på desimalplassar til høgre og venstre for desimalteiknet.

Viss formatkode inneheld berre #-plasshaldarar til venstre for dette symbolet, vil tal mindre enn 1 byrja med desimalteiknet. For alltid å visa ein leiande null ved desimaltal, bruk 0 som plasshaldar på den første plassen framføre desimalteiknet.

%: Multipliserer uttrykk med 100 og set inn prosentteiknet (%) der uttrykk er i format-koden.

E- E+ e- e+ : Viss format-koden inneheld minst ein plasshaldar for siffer (0 eller #) til høgre for symbolet E-, E+, e- eller e+, vert uttrykk formatert vitskapleg i eksponentialform. Bokstaven E eller e vert set inn mellom talet og eksponenten. Talet på plasshaldarar for tal til høgre for symbolet bestemmer talet på siffer i eksponenten.

Viss eksponenten er negativ, vert eit minusteikn (-) vist direkte framføre eksponenten med E-, E+, e-, e+. Viss eksponenten er positiv, vert plussteiknet vist berre framføre eksponentar med E+ eller e+.

Tusenskiljeteiknet vert vist viss format-koden inneheld skiljeteiknet omgjeve av plasshaldarar for tal (0 eller #).

Bruk av punktum som tusenskilje eller desimalteikn er avhengig av dei lokale innstillingane. Når du skriv inn eit tal direkte i BASIC kjeldekode, må du bruka punktum som desimalskiljeteikn. Kva teikn som vert vist som desimalteikn er derimot avhengig av talformatet sett i systeminnstillingane.

- + $ ( ) mellomrom: A pluss (+), minus (-), dollar ($), mellomrom, eller parentesar skrivne direkte i format-koden, vert viste som bokstavteikn.

For å kunna visa andre teikn enn dei som er lista her, må du setja ein bakoverstrek (\) framføre dei eller setja dei i doble hermeteikn (" ").

\ : Bakoverstreken viser det neste teiknet i format-koden.

Teikn i format-koden med ei spesiell meining kan berre visast som bokstavteikn viss dei har ein bakoverstrek framføre seg. Bakoverstreken vert ikkje vist. For å visa bakoverstrek må du skriva ein bakoverstrek framføre i formatkoden (\\).

Teikna som må ha ein bakoverstrek framføre seg for å verta viste som bokstavteikn, er formateringsteikna for dato og klokkeslett (a, c, d, h, m, n, p, q, s, t, w, y, /, :), numeriske formateringsteikn (#, 0, %, E, e, komma, punktum) og strengformateringsteikna (@, &, <, >, !).

Du kan også bruka følgjande førehandsdefinerte talformat. Med unnatak av "Generelle tal" returnerer alle dei førehandsdefinerte formatkodane talet som eit desimaltal med to desimalar.

Viss du brukar førehandsdefinerte format, må namnet på formatet skrivast mellom doble hermeteikn ("").

Predefined Formats

Generelle tal: Tala vert viste slik dei er skrivne inn.

Valuta: Set inn eit dollarteikn framføre talet og set negative tal i parentes.

Fixed: Viser minst eitt tal framføre desimalteiknet.

Standard: Viser talet med tusenskiljeteikn.

Prosent: Multipliserer talet med 100 og legg til prosentteiknet.

Vitskapleg: Viser talet i vitskapleg notasjon (for eksempel 1.00E+03 for 1000).

Ein format-kode kan delast i tre delar skilde med semikolon. Den første delen definerer formatet på ein positiv verdi, den andre for negative verdiar og den tredje for null. Set du opp berre éin format-kode, vil denne gjelda for alle tal.

Dei lokale innstillingane som styrer formateringa av tal, datoar og valuta i LibreOffice Basic vert sette i → Språkinnstillingar → Språk. I Basic-formatkodar vert alltid punktum (.) brukt som plasshaldar for desimalskiljeteiknet som er definert lokalt. Punktumet vert erstatta med det aktuelle skiljeteiknet.

Det same gjeld for dei lokale innstillingane for dato-, tid- og valuta-format. Basic-formatet vil verta tolka og vist i høve til dei lokale språkinnstillingane.

Eksempel:


    txt = svc.Format(6328.2, '##.##0.00')
    print(txt)
  

GetDefaultContext

Returns the default context of the process service factory, if existent, else returns a null reference.

GetDefaultContext is an alternative to the getComponentContext() method available from XSCRIPTCONTEXT global variable or from uno.py module.

Syntaks:

svc.GetDefaultContext(): uno

Returverdi:

The default component context is used, when instantiating services via XMultiServiceFactory. See the Professional UNO chapter in the Developer's Guide on api.libreoffice.org for more information.

Eksempel:


    ctx = svc.GetDefaultContext()
  

GetGuiType

Returns a numerical value that specifies the graphical user interface. This function is only provided for backward compatibility with previous versions.

Refer to system() method from platform Python module to identify the operating system.

Syntaks:

svc.GetGuiType(): int

Eksempel:


    n = svc.GetGuiType()
  

GetPathSeparator

Returns the operating system-dependent directory separator used to specify file paths.

Use os.pathsep from os Python module to identify the path separator.

Syntaks:

svc.GetPathSeparator(): str


    svc.GetPathSeparator(): str
  

Eksempel:


    sep = svc.GetPathSeparator()
  

GetSystemTicks

Returns the number of system ticks provided by the operating system. You can use this function to optimize certain processes. Use this method to estimate time in milliseconds:

Syntaks:

svc.GetSystemTicks(): int

Eksempel:


    ticks_ini = svc.GetSystemTicks()
    time.sleep(1)
    ticks_end = svc.GetSystemTicks()
    svc.MsgBox("{} - {} = {}".format(ticks_end, ticks_ini,ticks_end - ticks_ini))
  

GlobalScope.BasicLibraries

Returns the UNO object containing all shared Basic libraries and modules.

This method is the Python equivalent to GlobalScope.BasicLibraries in Basic scripts.

Syntaks:

svc.GlobalScope.BasicLibraries(): uno

Returverdi:

com.sun.star.script.XLibraryContainer

Eksempel:

The following example loads the Gimmicks Basic library if it has not been loaded yet.


    libs = svc.GlobalScope.BasicLibraries()
    if not libs.isLibraryLoaded("Gimmicks"):
        libs.loadLibrary("Gimmicks")
  

GlobalScope.DialogLibraries

Returns the UNO object containing all shared dialog libraries.

This method is the Python equivalent to GlobalScope.DialogLibraries in Basic scripts.

Syntaks:

svc.GlobalScope.DialogLibraries(): uno

Returverdi:

com.sun.star.comp.sfx2.DialogLibraryContainer

Eksempel:

The following example shows a message box with the names of all available dialog libraries.


    dlg_libs = svc.GlobalScope.DialogLibraries()
    lib_names = dlg_libs.getElementNames()
    svc.MsgBox("\n".join(lib_names))
  

InputBox

Syntaks:

svc.InputBox(prompt: str, [title: str], [default: str], [xpostwips: int, ypostwips: int]): str

Parametrar:

prompt: Strenguttrykket som vert vist som melding i dialogvindauget.

Title: Strenguttrykket som vert vist i tittelfeltet for dialogvindauget.

default: Strenguttrykket som vert vist i tekstfeltet i dialogvindauget viss det ikkje er skrive inn inndata.

xpostwips: Integer expression that specifies the horizontal position of the dialog. The position is an absolute coordinate and does not refer to the window of LibreOffice.

ypostwips: Integer expression that specifies the vertical position of the dialog. The position is an absolute coordinate and does not refer to the window of LibreOffice.

Viss xpostwips og ypostwips er sløyfa, vert dialogvindauget midtstilt på skjermen. Plasseringa vert bestemt med måleeininga twips.

Returverdi:

string

Eksempel:


    txt = s.InputBox('Please enter a phrase:', "Dear user")
    s.MsgBox(txt, MB_ICONINFORMATION, "Confirmation of phrase")
  
note

For in-depth information please refer to Input/Output to Screen with Python on the Wiki.


MsgBox

Displays a dialog box containing a message and returns an optional value.
MB_xx constants help specify the dialog type, the number and type of buttons to display, plus the icon type. By adding their respective values they form bit patterns, that define the MsgBox dialog appearance.

Syntaks:

svc.MsgBox(prompt: str, [buttons: int], [title: str])[: int]

Parametrar:

prompt Strenguttrykk som vert vist som ei melding i dialogvindauget. Linjeskift kan setjast inn med Chr$(13).

title: Strenguttrykk som vert vist på tittellinja i dialogvindauget. Viss denne vert sløyfa, vert programnamnet vist på tittellinja.

knappar: Eit heiltalsuttrykk som bestemmer dialogvindaugetypen, kor mange og kva type knappar som skal visast og ikontypen. knappar er ein kombinasjon av bit-mønster, det vil seia ein kombinasjon av element som vert definert ved å leggja saman dei respektive verdiane:

Returverdi:

An optional integer as detailed in above IDxx properties.

Eksempel:


    txt = s.InputBox('Please enter a phrase:', "Dear user")
    s.MsgBox(txt, MB_ICONINFORMATION, "Confirmation of phrase")
  
note

For in-depth information please refer to Input/Output to Screen with Python on the Wiki.


Now

Returns the current system date and time as a datetime.datetime Python native object.

Syntaks:

svc.Now(): datetime

Eksempel:


    svc.MsgBox(svc.Now(), svc.MB_OK, "Now")
  

RGB

Returns an integer color value consisting of red, green, and blue components.

Syntaks:

svc.RGB(red:int, green: int, blue: int): int

Parametrar:

Red: Kva heiltalsuttrykk som helst som representerer den raude komponenten (0 - 255) i ein samansett farge.

green: Kva heiltalsuttrykk som helst som representerer den grøne komponenten (0 - 255) i ein samansett farge.

blue: Kva heiltalsuttrykk som helst som representerer den blå komponenten (0 - 255) i ein samansett farge.

tip

Dialogvindauget Fargehentar hjelper med å rekna ut raude, grøne og blå komponentar i ein samansett farge. Endra tekstfarge og val av Tilpass farge vil også visa dialogvindauget for fargehentaren.


Returverdi:

integer

Eksempel:


    YELLOW = svc.RGB(255,255,0)
  

ThisComponent

If the current component refers to a LibreOffice document, this method returns the UNO object representing the document.

The method will return None when the current component does not correspond to a document.

Syntaks:

svc.ThisComponent(): uno

Eksempel:


    comp = svc.ThisComponent
    svc.MsgBox("\n".join(comp.getSupportedServiceNames()))
  

ThisDatabaseDocument

If the script is being executed from a Base document or any of its subcomponents this method returns the main component of the Base instance.

This method returns None otherwise.

Syntaks:

svc.ThisDatabaseDocument(): uno

Eksempel:


    db_doc = svc.ThisDatabaseDocument
    table_names = db_doc.DataSource.getTables().getElementNames()
    bas.MsgBox("\n".join(table_names))
  
tip

Visit the OfficeDatabaseDocument API page to learn more about Base's main component structure.


Xray

Inspect Uno objects or variables.

Syntaks:

svc.Xray(obj: any)

Parametrar:

obj: A variable or Uno object.

Eksempel:


    svc.Xray(svc.StarDesktop)
  
warning

Alle Basic-rutinane og -identifikatorane i ScriptForge som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje tenkt brukte i Basic-makroar.


Støtt oss!