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.

Collabora Office 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!