ScriptForge.Session-tjeneste

Tjenesten Økt samler ulike generelle metoder for:

Tjenestepåkallelse

Før du bruker Session-tjenesten, må ScriptForge-biblioteket lastes eller importeres:

note

• Grunnleggende makroer krever å laste ScriptForge-biblioteket ved hjelp av følgende setning:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-skript krever import fra scriptforge-modulen:
fra scriptforge import CreateScriptService


I Basic

    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim session As Variant
    session = CreateScriptService("Session")
  
I Python

    from scriptforge import CreateScriptService
    session = CreateScriptService("Session")
  

Konstanter

Nedenfor er en liste over konstanter som er tilgjengelige for å lette betegnelsen på biblioteket som inneholder et Basic- eller Python-skript å påkalle. Bruk dem som session.CONSTANT.

CONSTANT

Verdi

Hvor finner man biblioteket?

Anvendelig

SCRIPTISEMBEDDED

"document"

i dokumentet

Basic + Python

SCRIPTISAPPLICATION

"application"

i et hvilket som helst delt bibliotek

Basic

SCRIPTISPERSONAL

"user"

i Mine makroer

Python

SCRIPTISPERSOXT

"user:uno_packages"

i en utvidelse installert for gjeldende bruker

Python

SCRIPTISSHARED

"share"

i Applikasjonsmakroer

Python

SCRIPTISSHAROXT

"share:uno_packages"

i en utvidelse installert for alle brukere

Python

SCRIPTISOXT

"uno_packages"

i en utvidelse, men installasjonsparametrene er ukjente

Python


Liste over metoder i sesjonstjenesten

ExecuteBasicScript
ExecuteCalcFunction
ExecutePythonScript
GetPDFExportOptions
HasUnoMethod

HasUnoProperty
OpenURLInBrowser
RunApplication
SendMail
SetPDFExportOptions

UnoMethods
UnoProperties
UnoObjectType
WebService


tip

Utfør...-metoder i Økt-tjenesten oppfører seg som følger:
Argumenter sendes av verdi. Endringer gjort av den kalte funksjonen til argumentene oppdaterer ikke verdiene deres i det anropende skriptet.
En enkelt verdi eller en rekke verdier returneres til det anropende skriptet.


ExecuteBasicScript

Kjør BASIC-skriptet gitt navn og plassering, og hent eventuelt resultatet.

Hvis skriptet ikke returnerer noe, som er tilfellet med prosedyrer definert med Sub, er den returnerte verdien Tom.

Syntaks:

session.ExecuteBasicScript(scope: str, script: str, args: any[0..*]): any

Parametre:

omfang: Streng som spesifiserer hvor skriptet er lagret. Det kan enten være "dokument" (konstant session.SCRIPTISEMBEDDED) eller "applikasjon" (konstant session.SCRIPTISAPPLICATION).

script: Streng som spesifiserer skriptet som skal kalles i formatet "library.module.method" som en streng som skiller mellom store og små bokstaver.

args: Argumentene som skal sendes til det kalte skriptet.

Eksempel:

Tenk på følgende grunnleggende funksjon kalt DummyFunction som er lagret i "Mine makroer" i "Standard"-biblioteket inne i en modul kalt "Module1".

Funksjonen tar ganske enkelt inn to heltallsverdier v1 og v2 og returnerer summen av alle verdier som starter i v1 og slutter på v2.


    Function DummyFunction(v1 as Integer, v2 as Integer) As Long
        Dim result as Long, i as Integer
        For i = v1 To v2
            result = result + i
        Next i
        DummyFunction = result
    End Function
  

Eksemplene nedenfor viser hvordan du kaller DummyFunction fra Basic og Python-skript.

I Basic

    Dim session : session = CreateScriptService("Session")
    Dim b_script as String, result as Long
    b_script = "Standard.Module1.DummyFunction"
    result = session.ExecuteBasicScript("application", b_script, 1, 10)
    MsgBox result ' 55
  
I Python

    session = CreateScriptService("Session")
    bas = CreateScriptService("Basic")
    b_script = 'Standard.Module1.DummyFunction'
    result = session.ExecuteBasicScript('application', b_script, 1, 10)
    bas.MsgBox(result) # 55
  

ExecuteCalcFunction

Utfør en Calc-funksjon ved å bruke dets engelske navn og basert på de gitte argumentene.
Hvis argumentene er matriser, utføres funksjonen som enmatriseformel.

Syntaks:

session.ExecuteCalcFunction(calcfunction: str, args: any[0..*]): any

Parametre:

calcfunction: Navnet på Calc-funksjonen som skal anropes, på engelsk.

args: Argumentene som skal sendes til den anropte Calc-funksjonen. Hvert argument må enten være en streng, en numerisk verdi eller en rekke matriser som kombinerer disse typene.

Eksempel:

I Basic

    session.ExecuteCalcFunction("AVERAGE", 1, 5, 3, 7) ' 4
    session.ExecuteCalcFunction("ABS", Array(Array(-1, 2, 3), Array(4, -5, 6), Array(7, 8, -9)))(2)(2) ' 9
    session.ExecuteCalcFunction("LN", -3)
    ' Genererer en feil.
  
I Python

    session.ExecuteCalcFunction("AVERAGE", 1, 5, 3, 7) # 4
    session.ExecuteCalcFunction("ABS", ((-1, 2, 3), (4, -5, 6), (7, 8, -9)))[2][2] # 9
    session.ExecuteCalcFunction("LN", -3)
  

ExecutePythonScript

Kjør Python-skriptet gitt plassering og navn, hent resultatet hvis noen. Resultatet kan være en enkelt verdi eller en rekke verdier.

Hvis skriptet ikke blir funnet, eller hvis det ikke returnerer noe, er den returnerte verdien Tom.

LibreOffice Application Programming Interface (API) Scripting Framework, støtter kjøring av ulike språk script mellom Python og Basic, eller andre støttede programmeringsspråk for den saks skyld. Argumenter kan sendes frem og tilbake over anrop, forutsatt at de representerer primitive datatyper som begge språk gjenkjenner, og forutsatt at Scripting Framework konverterer dem på riktig måte.

Syntaks:

session.ExecutePythonScript(scope: str, script: str, args: any[0..*]): any

Parametre:

omfang: En av de aktuelle konstantene som er oppført over. Standardverdien er session.SCRIPTISSHARED.

script: Enten "library/module.py$method" eller "module.py$method" eller "myExtension.oxt|myScript|module.py$method" som en streng som skiller mellom store og små bokstaver.

args: Argumentene som skal sendes til det anropte skriptet.

Eksempel:

Tenk på Python-funksjonen odd_integers definert nedenfor som lager en liste med odde heltallsverdier mellom v1 og v2. Anta at denne funksjonen er lagret i en fil med navnet my_macros.py i mappen med brukerskript.


    def odd_integers(v1, v2):
        odd_list = [v for v in range(v1, v2 + 1) if v % 2 != 0]
        return odd_list
  
tip

Les hjelpesiden Organisasjon og plassering av Python-skript for å lære mer om hvor Python-skript kan lagres.


Følgende eksempler viser hvordan du kaller funksjonen odd_integers fra Basic og Python-skript.

I Basic

    Dim script as String, session as Object
    script = "my_macros.py$odd_integers"
    session = CreateScriptService("Session")
    Dim result as Variant
    result = session.ExecutePythonScript(session.SCRIPTISPERSONAL, script, 1, 9)
    MsgBox SF_String.Represent(result)
  
I Python

    session = CreateScriptService("Session")
    script = "my_macros.py$odd_integers"
    result = session.ExecutePythonScript(session.SCRIPTISPERSONAL, script, 1, 9)
    bas.MsgBox(repr(result))
  

GetPDFExportOptions

Returnerer gjeldende PDF-eksportinnstillinger som er definert i PDF-alternativer-dialogboksen, som kan nås ved å velge Fil - Eksporter som - Eksporter som PDF.

Eksportalternativer satt med PDF-alternativer-dialogboksen beholdes for fremtidig bruk. Derfor returnerer GetPDFExportOptions innstillingene som er definert. Bruk i tillegg SetPDFExportOptions for å endre gjeldende PDF-eksportalternativer.

Denne metoden returnerer et Ordbok-objekt der hver nøkkel representerer eksportalternativer og de tilsvarende verdiene er gjeldende PDF-eksportinnstillinger.

tip

Les PDF Export wiki-siden for å lære mer om alle tilgjengelige alternativer.


Syntaks:

session.GetPDFExportOptions(): obj

Eksempel:

I Basic

    Dim expSettings As Object, msg As String, key As String, optLabels As Variant
    expSettings = session.GetPDFExportOptions()
    optLabels = expSettings.Keys
    For Each key in optLabels
        msg = msg + key & ": " & expSettings.Item(key) & Chr(10)
    Next key
    MsgBox msg
    ' Zoom: 100
    ' Changes: 4
    ' Quality: 90
    ' ...
  
note

Denne metoden er bare tilgjengelig for Basic -skript.


HasUnoMethod

Returnerer True hvis et UNO-objekt inneholder den gitte metoden. Returnerer False når metoden ikke finnes eller når et argument er ugyldig.

Syntaks:

session.HasUnoMethod(unoobject: uno, methodname: str): bool

Parametre:

unoobject: Objektet som skal inspiseres.

metodenavn: metoden som en streng som skiller mellom store og små bokstaver

Eksempel:

I Basic

    Dim a As Variant
    a = CreateUnoService("com.sun.star.sheet.FunctionAccess")
    MsgBox session.HasUnoMethod(a, "callFunction") ' True
  
I Python

    bas = CreateScriptService("Basic")
    a = bas.CreateUnoService("com.sun.star.sheet.FunctionAccess")
    result = session.HasUnoMethod(a, "callFunction")
    bas.MsgBox(result) # True
  

HasUnoProperty

Returnerer True hvis et UNO-objekt har den gitte egenskapen. Returnerer False når egenskapen ikke finnes eller når et argument er ugyldig.

Syntaks:

session.HasUnoProperty(unoobject: uno, propertyname: str): bool

Parametre:

unoobject: Objektet som skal inspiseres.

egenskapsnavn: egenskapen som en streng som skiller mellom store og små bokstaver

Eksempel:

I Basic

    Dim svc As Variant
    svc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
    MsgBox session.HasUnoProperty(svc, "Wildcards")
  
I Python

    bas = CreateScriptService("Basic")
    a = bas.CreateUnoService("com.sun.star.sheet.FunctionAccess")
    result = session.HasUnoProperty(a, "Wildcards")
    bas.MsgBox(result) # True
  

OpenURLInBrowser

Åpne en Uniform Resource Locator (URL) i standardnettleseren.

Syntaks:

session.OpenURLInBrowser(url: str)

Parametre:

url: URL-en som skal åpnes.

Eksempel:


    ' Basic
    session.OpenURLInBrowser("help.libreoffice.org/")
  

    # Python
    session.OpenURLInBrowser("help.libreoffice.org/")
  

RunApplication

Utfører en vilkårlig systemkommando og returnerer Sann hvis den ble lansert.

Syntaks:

session.RunApplication(command: str, parameters: str): bool

Parametre:

kommando: Kommandoen som skal utføres. Dette kan være en kjørbar fil eller et dokument som er registrert med en applikasjon slik at systemet vet hvilken applikasjon som skal startes for det dokumentet. Kommandoen må uttrykkes i gjeldende SF_FileSystem.FileName notasjon.

parametere: En liste over mellomromseparerte parametere som en enkelt streng. Metoden validerer ikke de gitte parameterne, men sender dem bare til den angitte kommandoen.

Eksempel:

I Basic

    session.RunApplication("Notepad.exe")
    session.RunApplication("C:\myFolder\myDocument.odt")
    session.RunApplication("kate", "/home/user/install.txt") ' GNU/Linux
  
I Python

    session.RunApplication("Notepad.exe")
    session.RunApplication(r"C:\myFolder\myDocument.odt")
    session.RunApplication("kate", "/home/user/install.txt") # GNU/Linux
  

SendMail

Send en melding - med valgfrie vedlegg - til mottakere fra brukerens e-postklient. Meldingen kan redigeres av brukeren før sending eller, alternativt, sendes umiddelbart.

Syntaks:

session.SendMail(recipient: str, cc: str = '', bcc: str = '', subject: str = '', body: str = '', filenames: str = '', editmessage: bool = True)

Parametre:

mottaker: En e-postadresse («Til»-mottakeren).

cc: En kommadelt liste over e-postadresser («karbonkopi»-mottakerne).

bcc: En kommadelt liste over e-postadresser ("blinde kopi"-mottakere).

emne: overskriften på meldingen.

body: Innholdet i meldingen som en uformatert tekst.

filnavn: en kommadelt liste over filnavn. Hvert filnavn må respektere SF_FileSystem.FileNaming-notasjonen.

editmessage: Når True (standard), blir meldingen redigert før den sendes.

Eksempel:

I Basic

    session.SendMail("someone@example.com" _
        , Cc := "b@other.fr, c@other.be" _
        , FileNames := "C:\myFile1.txt, C:\myFile2.txt")
  
I Python

    session.SendMail("someone@example.com",
                     cc="john@other.fr, mary@other.be"
                     filenames=r"C:\myFile1.txt, C:\myFile2.txt")
  

SetPDFExportOptions

Endrer PDF-eksportinnstillingene som er definert i PDF-alternativer-dialogen, som kan nås ved å velge Fil - Eksporter som - Eksporter som PDF.

Å kalle denne metoden endrer de faktiske verdiene som er angitt i PDF-alternativer-dialogen, som brukes av ExportAsPDF-metoden fra Dokument-tjenesten.

Denne metoden returnerer True når den er vellykket.

tip

Les PDF Eksport wiki-siden for å lære mer om alle tilgjengelige alternativer.


Syntaks:

session.SetPDFExportOptions(pdfoptions: obj): bool

Parametre:

pdfoptions: Ordbok objekt som definerer PDF-eksportinnstillingene som skal endres. Hvert nøkkelverdi-par representerer et eksportalternativ og verdien som vil bli satt i dialogboksen.

Eksempel:

I Basic

Følgende eksempel endrer maksimal bildeoppløsning til 150 dpi og eksporterer gjeldende dokument som en PDF-fil.


    Dim newSettings As Object, oDoc As Object
    Set oDoc = CreateScriptService("Document")
    Set newSettings = CreateScriptService("Dictionary")
    newSettings.Add("ReduceImageResolution", True)
    newSettings.Add("MaxImageResolution", 150)
    session.SetPDFExportOptions(newSettings)
    oDoc.ExportAsPDF("C:\Documents\myFile.pdf", Overwrite := True)
  
note

Denne metoden er bare tilgjengelig for Basic -skript.


UnoMethods

Returnerer en liste over metodene som kan kalles fra et UNO-objekt. Listen er en nullbasert rekke av strenger og kan være tom.

Syntaks:

session.UnoMethods(unoobject: uno): str[0..*]

Parametre:

unoobject: Objektet som skal inspiseres.

Eksempel:

I Basic

    Dim svc : svc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
    Dim methods : methods = session.UnoMethods(svc)
    Dim msg as String
    For Each m in methods
        msg = msg & m & Chr(13)
    Next m
    MsgBox msg
  
I Python

    bas = CreateScriptService("Basic")
    a = bas.CreateUnoService("com.sun.star.sheet.FunctionAccess")
    methods = session.UnoMethods(a)
    msg = "\n".join(methods)
    bas.MsgBox(msg)
  

UnoProperties

Returnerer en liste over egenskapene til et UNO-objekt. Listen er en nullbasert rekke av strenger som kan være tom.

Syntaks:

session.UnoProperties(unoobject: uno): str[0..*]

Parametre:

unoobject: Objektet som skal inspiseres.

Eksempel:

I Basic

    Dim svc As Variant
    svc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
    MsgBox SF_Array.Contains(session.UnoProperties(svc), "Wildcards") ' True
  
I Python

    bas = CreateScriptService("Basic")
    svc = bas.CreateUnoService("com.sun.star.sheet.FunctionAccess")
    properties = session.UnoProperties(a)
    b = "Wildcards" in properties
    bas.MsgBox(str(b)) # True
  

UnoObjectType

Identifiser typen av et UNO-objekt som en streng.

Syntaks:

session.UnoObjectType(unoobject: uno): str

Parametre:

unoobject: Objektet som skal identifiseres.

Eksempel:

I Basic

    Dim svc As Variant, txt As String
    svc = CreateUnoService("com.sun.star.system.SystemShellExecute")
    txt = session.UnoObjectType(svc) ' "com.sun.star.comp.system.SystemShellExecute"
    svc = CreateUnoStruct("com.sun.star.beans.Property")
    txt = session.UnoObjectType(svc) ' "com.sun.star.beans.Property"
  
I Python

    bas = CreateScriptService("Basic")
    svc = bas.CreateUnoService("com.sun.star.system.SystemShellExecute")
    txt = session.UnoObjectType(svc) # "com.sun.star.comp.system.SystemShellExecute"
    svc = bas.CreateUnoService("com.sun.star.beans.Property")
    txt = session.UnoObjectType(svc) # "com.sun.star.beans.Property"
  

WebService

Få noe nettinnhold fra en URI.

Syntaks:

session.WebService(uri: str): str

Parametre:

uri: URI-adressen til nettjenesten.

Eksempel:

I Basic

    session.WebService("wiki.documentfoundation.org/api.php?" _
        & "hidebots=1&days=7&limit=50&action=feedrecentchanges&feedformat=rss")
  
I Python

    session.WebService(("wiki.documentfoundation.org/api.php?" 
                       "hidebots=1&days=7&limit=50&action=feedrecentchanges&feedformat=rss"))
  
warning

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.


Supporter oss!