Περιεχόμενα
Δείκτης 🔎︎

# ScriptForge.Session service

The Session service gathers various general-purpose methods about:

- the installation or execution environment

- UNO introspection

- the invocation of external scripts or programs

## Service invocation

         GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
         Dim session As Variant
         session = CreateScriptService("Session")

Αυτή η υπηρεσία υποστηρίζεται πλήρως και στις γλώσσες Basic και Python. Όλα τα παραδείγματα εκφράζονται χρησιμοποιώντας τη γλώσσα προγραμματισμού Basic και μπορούν εύκολα να μετατραπούν σε Python.

## Constants

Below is a list of constants available to ease the designation of the library containing a Basic or Python script to invoke.
Use them as session.CONSTANT.

CONSTANT | Value | Where to find the library? | Applicable
SCRIPTISEMBEDDED | "document" | in the document | Basic + Python
SCRIPTISAPPLICATION | "application" | in any shared library | Basic
SCRIPTISPERSONAL | "user" | in My Macros | Python
SCRIPTISPERSOXT | "user:uno_packages" | in an extension installed for the current user | Python
SCRIPTISSHARED | "share" | in LibreOffice macros | Python
SCRIPTISSHAROXT | "share:uno_packages" | in an extension installed for all users | Python
SCRIPTISOXT | "uno_packages" | in an extension but the installation parameters are unknown | Python

List of Methods in the Session Service
ExecuteBasicScript ExecuteCalcFunction ExecutePythonScript HasUnoMethod | HasUnoProperty OpenURLInBrowser RunApplication SendMail | UnoMethods UnoProperties UnoObjectType WebService

Session service methods behave as follows:
Arguments are passed by value. Updates performed by the called function are not sent back to the calling script.
A single value or an array of values is returned to the calling script.

## ExecuteBasicScript

Execute the Basic script given its name and location and fetch its result if any.

If the script is not found, or if it returns nothing, the returned value is Empty.

### Σύνταξη:

          session.ExecuteBasicScript([Scope As String], Script As String[, arg0 As Variant, ...]) As Variant

### Παράμετροι:

Scope: "document" or "application" or one of the applicable session.CONSTANTS.

Script: "library.module.method" as a case-sensitive string.
The library is loaded in memory if necessary.
The module must not be a class module.
The method may be a Sub or a Function.

arg0, ...: The arguments to provide to the called script.

### Παράδειγμα:

          session.ExecuteBasicScript(, "XrayTool._Main.Xray", CreateUnoService("com.sun.star.util.TextSearch"))
          ' Xray returns no value

## ExecuteCalcFunction

Execute a Calc function using its English name and based on the given arguments.
If the arguments are arrays, the function is executed as an array formula.

### Σύνταξη:

          session.ExecuteCalcFunction(CalcFunction As String, arg0, ...) As Variant

### Παράμετροι:

CalcFunction: The English name of the function to execute.

arg0, ...: The arguments to provide to the called Calc function. Each argument must be either a string, a numeric value or an array of arrays combining those types.

### Παράδειγμα:

          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)
          ' Generates an error.

## ExecutePythonScript

Execute the Python script given its location and name, fetch its result if any. Result can be a single value or an array of values.

If the script is not found, or if it returns nothing, the returned value is Empty.

Το Πλαίσιο δέσμης ενεργειών του LibreOffice Διασύνδεση προγραμματισμού εφαρμογών (API) υποστηρίζει τη διαγλωσσική εκτέλεση σεναρίων μεταξύ Python και Basic ή άλλες υποστηριζόμενες γλώσσες προγραμματισμού για αυτό το θέμα. Τα ορίσματα μπορούν να διαβιβαστούν πέρα δώθε σε κλήσεις, υπό την προϋπόθεση ότι αντιπροσωπεύουν πρωτογενείς τύπους δεδομένων που αναγνωρίζουν και οι δύο γλώσσες και υποθέτοντας ότι το Πλαίσιο Σεναρίων τα μετατρέπει κατάλληλα.

### Σύνταξη:

          session.ExecutePythonScript([Scope] As String, Script As String[, arg0 As Variant, ...]) As Variant

### Παράμετροι:

Scope: One of the applicable session.CONSTANTS. Default = session.SCRIPTISSHARED.

Script: Either "library/module.py$method" or "module.py$method" or "myExtension.oxt|myScript|module.py$method" as a case-sensitive string.

- library: The folder path to the Python module.

- myScript: The folder containing the Python module.

- module.py: The Python module.

- method: The Python function.

arg0, ...: The arguments to provide to the called script.

### Παράδειγμα:

          session.ExecutePythonScript(session.SCRIPTISSHARED, "Capitalise.py$getNewString", "Abc") ' "abc"

## HasUnoMethod

Returns True if an UNO object contains the given method. Returns False when the method is not found or when an argument is invalid.

### Σύνταξη:

          session.HasUnoMethod(UnoObject As Object, MethodName As String) As Boolean

### Παράμετροι:

UnoObject: The object to inspect.

MethodName: the method as a case-sensitive string

### Παράδειγμα:

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

## HasUnoProperty

Returns True if a UNO object has the given property. Returns False when the property is not found or when an argument is invalid.

### Σύνταξη:

          session.HasUnoProperty(UnoObject As Object, PropertyName As String) As Boolean

### Παράμετροι:

UnoObject: The object to inspect.

PropertyName: the property as a case-sensitive string

### Παράδειγμα:

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

## OpenURLInBrowser

Open a Uniform Resource Locator (URL) in the default browser.

### Σύνταξη:

          session.OpenURLInBrowser(URL As String)

### Παράμετροι:

URL: The URL to open.

### Παράδειγμα:

          session.OpenURLInBrowser("https://docs.python.org/3/library/webbrowser.html")

## RunApplication

Executes an arbitrary system command and returns True if it was launched successfully.

### Σύνταξη:

          session.RunApplication(Command As String, Parameters As String) As Boolean

### Παράμετροι:

Command: The command to execute. This may be an executable file or a document which is registered with an application so that the system knows what application to launch for that document. The command must be expressed in the current SF_FileSystem.FileNaming notation.

Parameters: A list of space separated parameters as a single string. The method does not validate the given parameters, but only passes them to the specified command.

### Παράδειγμα:

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

## SendMail

Send a message - with optional attachments - to recipients from the user's mail client. The message may be edited by the user before sending or, alternatively, be sent immediately.

### Σύνταξη:

          session.SendMail(Recipient As String, [Cc As String], [Bcc As String], [Subject As String], [Body As String], [FileNames As String], [EditMessage As Boolean])

### Παράμετροι:

Recipient: An email address (the "To" recipient).

Cc: A comma-separated list of email addresses (the "carbon copy" recipients).

Bcc: A comma-separated list of email addresses (the "blind carbon copy" recipients).

Subject: the header of the message.

Body: The content of the message as an unformatted text.

FileNames: a comma-separated list of file names. Each file name must respect the SF_FileSystem.FileNaming notation.

EditMessage: When True (default), the message is edited before being sent.

### Παράδειγμα:

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

## UnoMethods

Returns a list of the methods callable from an UNO object. The list is a zero-based array of strings and may be empty.

### Σύνταξη:

          session.UnoMethods(UnoObject As Object) As Variant

### Παράμετροι:

UnoObject: The object to inspect.

### Παράδειγμα:

          Dim a As Variant
          a = CreateUnoService("com.sun.star.sheet.FunctionAccess")
          MsgBox SF_Array.Contains(session.UnoMethods(a), "callFunction")

## UnoProperties

Returns a list of the properties of an UNO object. The list is a zero-based array of strings and may be empty.

### Σύνταξη:

          session.UnoProperties(UnoObject As Object) As Variant

### Παράμετροι:

UnoObject: The object to inspect.

### Παράδειγμα:

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

## UnoObjectType

Identify the type of a UNO object as a string.

### Σύνταξη:

          session.UnoObjectType(UnoObject As Object) As String

### Παράμετροι:

UnoObject: The object to identify.

### Παράδειγμα:

          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"

## WebService

Get some web content from a URI.

### Σύνταξη:

          session.WebService(URI As String) As String

### Παράμετροι:

URI: URI text of the web service.

### Παράδειγμα:

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

Όλες οι ScriptForge ρουτίνες Basic ή αναγνωριστικά που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζεται να χρησιμοποιηθούν σε μακροεντολές Basic.

Σχετικά θέματα

Συνάρτηση Array

Κλήση συναρτήσεων Calc

Κλήση Python Scripts από Basic

Υπηρεσία ScriptForge.FileSystem