ScriptForge.Session tjeneste

Innhold

# ScriptForge.Session-tjeneste

Tjenesten Økt samler ulike generelle metoder for:

- installasjons- eller utførelsesmiljøet

- UNO introspeksjon

- påkalling av eksterne skript eller programmer

## Tjenestepåkallelse

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

• 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

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.

- Biblioteket lastes inn i minnet om nødvendig.

- Modulen må ikke være en klassemodul.

- Metoden kan være en Sub eller en Funksjon.

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.

- bibliotek: Mappebanen til Python-modulen.

- myScript: Mappen som inneholder Python-modulen.

- module.py: Python-modulen.

- metode: Python-funksjonen.

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

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.

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
        ' ...

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. Denne metoden starter likeledes .bat- eller shell-skript. Kommandoen må uttrykkes i gjeldende SF_FileSystem.FileNaming-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.

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)

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"))

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.

Lignende emner

Matrisefunksjon

Bruke Calc-funksjoner i makroer

Anroper Python-skript fra Basic

ScriptForge.Grunnleggende tjeneste

ScriptForge.FileSystem-tjeneste