Υπηρεσία ScriptForge.Session

Η υπηρεσία Session συγκεντρώνει διάφορες μεθόδους γενικής χρήσης σχετικές με:

την κλήση υπηρεσίας

Πριν χρησιμοποιήσετε την υπηρεσία Session, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:

note

• Οι μακροεντολές Basic απαιτούν τη φόρτωση της βιβλιοθήκης ScriptForge χρησιμοποιώντας την ακόλουθη πρόταση:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Τα σενάρια Python απαιτούν εισαγωγή από την ενότητα scriptforge:
από το scriptforge import CreateScriptService


Σε Basic

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

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

Σταθερές

Παρακάτω είναι ένας κατάλογος σταθερών που είναι διαθέσιμες για να διευκολύνουν τον προσδιορισμό της βιβλιοθήκης που περιέχει ένα σενάριο Basic ή Python προς κλήση. Χρησιμοποιήστε τες ως session.CONSTANT.

CONSTANT

Τιμή

Πού βρίσκεται η βιβλιοθήκη;

Εφαρμόσιμος

SCRIPTISEMBEDDED

"document"

στο έγγραφο

Basic + Python

SCRIPTISAPPLICATION

"application"

σε οποιαδήποτε κοινόχρηστη βιβλιοθήκη

Basic

SCRIPTISPERSONAL

"user"

στις μακροεντολές μου

Python

SCRIPTISPERSOXT

"user:uno_packages"

σε μια επέκταση που έχει εγκατασταθεί για τον τρέχοντα χρήστη

Python

SCRIPTISSHARED

"share"

στις μακροεντολές του LibreOffice

Python

SCRIPTISSHAROXT

"share:uno_packages"

σε μια επέκταση που είναι εγκατεστημένη για όλους τους χρήστες

Python

SCRIPTISOXT

"uno_packages"

σε μια επέκταση στην οποία οι παράμετροι εγκατάστασης είναι άγνωστες

Python


Κατάλογος μεθόδων στην υπηρεσία Session (συνεδρίας)

ExecuteBasicScript
ExecuteCalcFunction
ExecutePythonScript
GetPDFExportOptions
HasUnoMethod

HasUnoProperty
OpenURLInBrowser
RunApplication
SendMail
SetPDFExportOptions

UnoMethods
UnoProperties
UnoObjectType
WebService


tip

Οι μέθοδοι Execute... (Εκτέλεση...) στην υπηρεσία Session συμπεριφέρονται ως εξής:
Τα ορίσματα μεταβιβάζονται με τιμή. Οι αλλαγές που γίνονται από την καλούμενη συνάρτηση στα ορίσματα δεν ενημερώνουν τις τιμές τους στο σενάριο κλήσης.
Μια μεμονωμένη τιμή ή ένας πίνακας τιμών επιστρέφεται στο σενάριο κλήσης.


ExecuteBasicScript

Εκτέλεση του σεναρίου της Basic με το όνομα και τη θέση της και λήψη του αποτελέσματός της, εάν υπάρχει.

Εάν το σενάριο δεν επιστρέφει τίποτα, όπως συμβαίνει με τις διαδικασίες που ορίζονται με το Sub, η τιμή που επιστρέφεται είναι Empty.

Σύνταξη:

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

Παράμετροι:

scope: Συμβολοσειρά που καθορίζει πού αποθηκεύεται το σενάριο. Μπορεί να είναι είτε "document" (constant session.SCRIPTISEMBEDDED), είτε "application" (σταθερά session.SCRIPTISAPPLICATION).

script: Συμβολοσειρά που καθορίζει το σενάριο που θα κληθεί στη μορφή "library.module.method" ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων.

args: Τα ορίσματα που θα μεταβιβαστούν στο καλούμενο σενάριο.

Παράδειγμα:

Εξετάστε την ακόλουθη συνάρτηση της Basic με το όνομα DummyFunction που είναι αποθηκευμένη στο "My Macros" στη βιβλιοθήκη "Standard" στην λειτουργική μονάδα που ονομάζεται "Module1".

Η συνάρτηση απλώς λαμβάνει δύο ακέραιες τιμές v1 και v2 και επιστρέφει το άθροισμα όλων των τιμών που ξεκινούν από v1 και τελειώνουν σε 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
  

Τα παρακάτω παραδείγματα δείχνουν πώς να καλέσετε το DummyFunction μέσα από τα σενάρια Basic και Python.

Σε 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
  
Σε 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

Εκτελέστε μια συνάρτηση Calc χρησιμοποιώντας το αγγλικό της όνομα και με βάση τα δεδομένα ορίσματα.
Εάν τα ορίσματα είναι πίνακες, η συνάρτηση εκτελείται ως τύπος πίνακα.

Σύνταξη:

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

Παράμετροι:

calcfunction: Το όνομα της συνάρτησης Calc που θα κληθεί, στα αγγλικά.

args: Τα ορίσματα που θα μεταβιβαστούν στην καλούμενη συνάρτηση Calc. Κάθε όρισμα πρέπει να είναι είτε συμβολοσειρά, αριθμητική τιμή, ή ένας πίνακας πινάκων που συνδυάζει αυτούς τους τύπους.

Παράδειγμα:

Σε 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)
    ' Δημιουργεί ένα σφάλμα.
  
Σε 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

Εκτελέστε το σενάριο Python, του οποίου δίνεται η τοποθεσία και το ονόμα του, ανακτήστε το αποτέλεσμα του, εάν υπάρχει. Το αποτέλεσμα μπορεί να είναι μια μεμονωμένη τιμή ή ένας πίνακας τιμών.

Εάν το σενάριο δεν βρεθεί ή αν δεν επιστρέψει τίποτα, η τιμή που επιστρέφεται είναι Empty.

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

Σύνταξη:

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

Παράμετροι:

scope: Μία από τις ισχύουσες σταθερές που αναφέρονται στο παραπάνω. Η προεπιλεγμένη τιμή είναι session.SCRIPTISSHARED.

script: Είτε "library/module.py$method", ή "module.py$method", ή "myExtension.oxt|myScript|module.py$method" ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων.

args: Τα ορίσματα που θα μεταβιβαστούν στο καλούμενο σενάριο.

Παράδειγμα:

Εξετάστε τη συνάρτηση Python odd_integers που ορίζεται παρακάτω και δημιουργεί έναν κατάλογο με περιττές ακέραιες τιμές μεταξύ v1 και v2. Ας υποθέσουμε ότι αυτή η συνάρτηση είναι αποθηκευμένη σε ένα αρχείο με το όνομα my_macros.py στον φάκελο σεναρίων χρήστη.


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

Διαβάστε τη σελίδα βοήθειας Οργάνωση και τοποθεσία σεναρίων Python για να μάθετε περισσότερα σχετικά με το πού μπορούν να αποθηκευτούν τα σενάρια Python.


Τα ακόλουθα παραδείγματα δείχνουν πώς να καλέσετε τη συνάρτηση odd_integers μέσα από τα σενάρια Basic και Python.

Σε 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)
  
Σε Python

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

GetPDFExportOptions

Επιστρέφει τις τρέχουσες ρυθμίσεις εξαγωγής PDF που ορίζονται στο παράθυρο διαλόγου Επιλογές PDF, στο οποίο μπορείτε να προσπελάσετε επιλέγοντας Αρχείο - Εξαγωγή ως - Εξαγωγή ως PDF.

Οι επιλογές εξαγωγής που έχουν οριστεί με το παράθυρο διαλόγου Επιλογές PDF διατηρούνται για μελλοντική χρήση. Ως εκ τούτου, το GetPDFExportOptions επιστρέφει τις ρυθμίσεις που έχουν οριστεί αυτήν τη στιγμή. Επιπλέον, χρησιμοποιήστε SetPDFExportOptions για να αλλάξετε τις τρέχουσες επιλογές εξαγωγής PDF.

Αυτή η μέθοδος επιστρέφει ένα αντικείμενο Dictionary (Λεξικό) όπου κάθε κλειδί αντιπροσωπεύει επιλογές εξαγωγής και οι αντίστοιχες τιμές είναι οι τρέχουσες ρυθμίσεις εξαγωγής PDF.

tip

Διαβάστε τη σελίδα wiki Εξαγωγή PDF για να μάθετε περισσότερα σχετικά με όλες τις διαθέσιμες επιλογές.


Σύνταξη:

session.GetPDFExportOptions(): obj

Παράδειγμα:

Σε 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

Αυτή η μέθοδος είναι διαθέσιμη μόνο για σενάρια Basic.


HasUnoMethod

Επιστρέφει True εάν ένα αντικείμενο UNO περιέχει τη δεδομένη μέθοδο. Επιστρέφει False όταν η μέθοδος δεν βρίσκεται ή όταν ένα όρισμα είναι άκυρο.

Σύνταξη:

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

Παράμετροι:

unoobject: Το αντικείμενο προς επιθεώρηση.

methodname (όνομα μεθόδου): η μέθοδος ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων

Παράδειγμα:

Σε Basic

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

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

HasUnoProperty

Επιστρέφει True εάν ένα αντικείμενο UNO έχει τη δεδομένη ιδιότητα. Επιστρέφει False όταν η ιδιότητα δεν βρέθηκε, ή όταν ένα όρισμα είναι άκυρο.

Σύνταξη:

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

Παράμετροι:

unoobject: Το αντικείμενο προς επιθεώρηση.

propertyname (όνομα ιδιότητας): η ιδιότητα ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων

Παράδειγμα:

Σε Basic

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

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

OpenURLInBrowser

Ανοίξτε ένα Uniform Resource Locator (URL) στον προεπιλεγμένο περιηγητή.

Σύνταξη:

session.OpenURLInBrowser(url: str)

Παράμετροι:

url: Η διεύθυνση URL για άνοιγμα.

Παράδειγμα:


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

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

RunApplication

Εκτελεί μια τυχαία εντολή συστήματος και επιστρέφει το True εάν εκκινήθηκε με επιτυχία.

Σύνταξη:

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

Παράμετροι:

command (εντολή): Η εντολή προς εκτέλεση. Αυτό μπορεί να είναι ένα εκτελέσιμο αρχείο ή ένα έγγραφο που έχει καταχωρηθεί σε μια εφαρμογή, έτσι ώστε το σύστημα να γνωρίζει ποια εφαρμογή να εκκινήσει για αυτό το έγγραφο. Η εντολή πρέπει να εκφράζεται με την τρέχουσα σημειογραφία SF_FileSystem.FileNaming.

parameters (παράμετροι): Ένας κατάλογος παραμέτρων που χωρίζονται με διαστήματα ως συμβολοσειρά. Η μέθοδος δεν επικυρώνει τις δεδομένες παραμέτρους, αλλά τις μεταβιβάζει μόνο στην καθορισμένη εντολή.

Παράδειγμα:

Σε Basic

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

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

SendMail

Στείλτε ένα μήνυμα - με προαιρετικά συνημμένα - σε παραλήπτες από το πρόγραμμα-πελάτη αλληλογραφίας του χρήστη. Το μήνυμα μπορεί να επεξεργαστεί από τον χρήστη πριν από την αποστολή, ή εναλλακτικά, να αποσταλεί αμέσως.

Σύνταξη:

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

Παράμετροι:

recipient (παραλήπτης): Μια διεύθυνση ηλεκτρονικού ταχυδρομείου (ο παραλήπτης του "Προς").

cc: Ένας κατάλογος διευθύνσεων ηλεκτρονικού ταχυδρομείου διαχωρισμένος με κόμματα (οι παραλήπτες "κοινοποίησης").

bcc (κρυφή κοινοποίηση): Ένας κατάλογος διευθύνσεων ηλεκτρονικού ταχυδρομείου διαχωρισμένος με κόμματα (οι παραλήπτες της "κρυφής κοινοποίησης").

subject (θέμα): η κεφαλίδα του μηνύματος.

body (σώμα): Τα περιεχόμενα του μηνύματος ως αμορφοποίητο κείμενο.

filenames (ονόματα αρχείων): ένας κατάλογος ονομάτων αρχείων διαχωρισμένος με κόμματα. Κάθε όνομα αρχείου πρέπει να υπακούει τη σημειογραφία SF_FileSystem.FileNaming.

editmessage (επεξεργασία μηνύματος): Όταν είναι True (προεπιλογή), το μήνυμα επεξεργάζεται πριν αποσταλεί.

Παράδειγμα:

Σε Basic

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

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

SetPDFExportOptions

Τροποποιεί τις ρυθμίσεις εξαγωγής PDF που ορίζονται στο παράθυρο διαλόγου Επιλογές PDF, στο οποίο μπορείτε να προσπελάσετε επιλέγοντας Αρχείο - Εξαγωγή ως - Εξαγωγή ως PDF.

Η κλήση αυτής της μεθόδου αλλάζει τις ενεργές τιμές που ορίζονται στο παράθυρο διαλόγου Επιλογές PDF, οι οποίες χρησιμοποιούνται από τη μέθοδο ExportAsPDF από την υπηρεσία Document.

Αυτή η μέθοδος επιστρέφει True όταν είναι επιτυχής.

tip

Διαβάστε τη σελίδα wiki Εξαγωγή PDF για να μάθετε περισσότερα σχετικά με όλες τις διαθέσιμες επιλογές.


Σύνταξη:

session.SetPDFExportOptions(pdfoptions: obj): bool

Παράμετροι:

pdfoptions (επιλογές pdf): το αντικείμενο Dictionary (Λεξικό) που ορίζει τις ρυθμίσεις εξαγωγής PDF που πρέπει να αλλάξουν. Κάθε ζεύγος κλειδιού-τιμής αντιπροσωπεύει μια επιλογή εξαγωγής και την τιμή που θα οριστεί στο παράθυρο διαλόγου.

Παράδειγμα:

Σε Basic

Το παρακάτω παράδειγμα αλλάζει τη μέγιστη ανάλυση εικόνας σε 150 dpi και εξάγει το τρέχον έγγραφο ως αρχείο PDF.


    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

Αυτή η μέθοδος είναι διαθέσιμη μόνο για σενάρια Basic.


UnoMethods

Επιστρέφει έναν κατάλογο με τις μεθόδους που μπορούν να κληθούν από ένα αντικείμενο UNO. Ο κατάλογος είναι ένας πίνακας συμβολοσειρών με βάση το μηδέν και μπορεί να είναι κενός.

Σύνταξη:

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

Παράμετροι:

unoobject: Το αντικείμενο προς επιθεώρηση.

Παράδειγμα:

Σε 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
  
Σε Python

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

UnoProperties

Επιστρέφει έναν κατάλογο με τις ιδιότητες ενός αντικειμένου UNO. Ο κατάλογος είναι ένας πίνακας συμβολοσειρών με βάση το μηδέν και μπορεί να είναι κενός.

Σύνταξη:

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

Παράμετροι:

unoobject: Το αντικείμενο προς επιθεώρηση.

Παράδειγμα:

Σε Basic

    Dim svc As Variant
    svc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
    MsgBox SF_Array.Contains(session.UnoProperties(svc), "Wildcards") ' True
  
Σε 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

Προσδιορίζει τον τύπο ενός αντικειμένου UNO ως συμβολοσειρά.

Σύνταξη:

session.UnoObjectType(unoobject: uno): str

Παράμετροι:

unoobject: Το αντικείμενο προς αναγνώριση.

Παράδειγμα:

Σε 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"
  
Σε 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

Λάβετε το περιεχόμενο ιστού από ένα URI.

Σύνταξη:

session.WebService(uri: str): str

Παράμετροι:

uri: διεύθυνση URI της υπηρεσίας Ιστού.

Παράδειγμα:

Σε Basic

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

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

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


Παρακαλούμε, υποστηρίξτε μας!