Δημιουργία σεναρίων Python με το ScriptForge

Περιεχόμενα

# Δημιουργία σεναρίων Python με ScriptForge

## Διαφορές μεταξύ Basic και Python

Η βιβλιοθήκη ScriptForge είναι διαθέσιμη τόσο για Basic όσο και για Python. Οι περισσότερες υπηρεσίες, μέθοδοι και ιδιότητες λειτουργούν με τον ίδιο τρόπο και στις δύο γλώσσες προγραμματισμού. Ωστόσο, λόγω διαφορών στον τρόπο λειτουργίας κάθε γλώσσας, οι χρήστες του ScriptForge πρέπει να γνωρίζουν ορισμένα χαρακτηριστικά της βιβλιοθήκης όταν χρησιμοποιούν τη Python:

- Μέθοδοι και ονόματα ιδιοτήτων: Στην Python, όλες οι μέθοδοι και οι ιδιότητες μπορούν να χρησιμοποιηθούν σε μορφές πεζών, με πρώτο γράμμα κάθε λέξης κεφαλαίο (ProperCased) ή καμηλογράμματα (camelCased).

- Arguments: (Ορίσματα:) Όλα τα ορίσματα των λέξεων-κλειδιών που μεταβιβάζονται στις μεθόδους είναι πεζά.

- Dates: (Ημερομηνίες:) Όλα τα αντικείμενα ημερομηνίας μεταβιβάζονται και επιστρέφονται ως datetime.datetime εγγενή αντικείμενα Python.

- Arrays: (Πίνακες:) Οι μονοδιάστατοι πίνακες μεταβιβάζονται και επιστρέφονται ως πλειάδες (που είναι ένα αμετάβλητο αντικείμενο). Οι δισδιάστατοι πίνακες διαβιβάζονται και επιστρέφονται ως πλειάδες πλειάδων.

- None: Η λέξη-κλειδί None της Python είναι ισοδύναμη με τις λέξεις Null, Empty (Κενό) ή Nothing (Τίποτα) της Basic.

- UNO objects: (Αντικείμενα UNO:) Όλες οι δομές UNO ανταλλάσσονται μεταξύ Basic και Python χωρίς καμία αλλαγή.

- Debugging: (Αποσφαλμάτωση) Κάθε φορά που παρουσιάζεται σφάλμα σε σενάρια Python που χρησιμοποιούν ScriptForge, το μήνυμα σφάλματος που παρέχεται από τη στοίβα εκτέλεσης Python εμφανίζει τη γραμμή κώδικα που ενεργοποίησε το σφάλμα. Στα μηνύματα σφάλματος Basic δεν εμφανίζονται αυτές οι πληροφορίες.

Επισκεφτείτε τη Βοήθεια δεσμών ενεργειών της LibreOffice Python για περισσότερες πληροφορίες σχετικά με τη δέσμη ενεργειών Python χρησιμοποιώντας το LibreOffice.

## Εκτέλεση σεναρίων Python στο LibreOffice

Ανάλογα με το τι σκοπεύετε να επιτύχετε, μπορείτε να επιλέξετε μία από τις ακόλουθες προσεγγίσεις για την εκτέλεση σεναρίων Python στο LibreOffice:

- Εκτέλεση σεναρίων εντός της τρέχουσας διεργασίας LibreOffice: Τα σενάρια Python εκτελούνται από τη διεργασία του LibreOffice χρησιμοποιώντας το μενού Εργαλεία - Μακροεντολές - Εκτέλεση μακροεντολής ή την επέκταση APSO για την κλήση των σεναρίων του χρήστη που είναι αποθηκευμένα στο φάκελο σεναρίων Python. Μπορείτε επίσης να χρησιμοποιήσετε το κέλυφος APSO Python για να εκτελέσετε διαδραστικά σενάρια Python.

- Εκτέλεση σεναρίων χωριστά από τη διεργασία του LibreOffice: Τα σενάρια Python εκτελούνται από μια εξωτερική διεργασία που συνδέεται με μια εν εξελίξει διεργασία του LibreOffice χρησιμοποιώντας μια υποδοχή.

Εάν σκοπεύετε να εκτελέσετε σενάρια μέσα από τη διαδικασία του LibreOffice, συνιστάται να εγκαταστήσετε την επέκτασηAPSO (Alternative Script Organizer for Python). Ωστόσο, για να αναπτύξετε σενάρια Python εκτός του LibreOffice, μπορείτε να επιλέξετε το IDE της Python που προτιμάτε.

## Εκτέλεση σεναρίων μέσα από τη διαδικασία του LibreOffice

### Χρησιμοποιώντας την επέκταση APSO

Ο ευκολότερος τρόπος για να ξεκινήσετε με τη δέσμη ενεργειών Python στο LibreOffice είναι να εγκαταστήσετε την επέκταση APSO. Αφού την εγκαταστήσετε, ανοίξτε οποιοδήποτε στοιχείο του LibreOffice και μεταβείτε στο Εργαλεία - Μακροεντολές - Οργάνωση σεναρίων Python.

Στο κύριο παράθυρο του APSO μεταβείτε στο Menu - Shell (Μενού - Κέλυφος Python).

Εναλλακτικά, μπορείτε να ανοίξετε το APSO χρησιμοποιώντας την προεπιλεγμένη συντόμευση Alt + Shift + F11.

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

Για να ξεκινήσετε να χρησιμοποιείτε τη βιβλιοθήκη ScriptForge, πρέπει να εισαγάγετε τη μέθοδο CreateScriptService, με την οποία θα μπορείτε να έχετε πρόσβαση στις υπηρεσίες που παρέχει η βιβλιοθήκη. Το παρακάτω παράδειγμα χρησιμοποιεί την υπηρεσία Basic για να εμφανίσει ένα πλαίσιο μηνύματος.

        from scriptforge import CreateScriptService
        bas = CreateScriptService("Basic")
        bas.MsgBox("Hello!")

Για να εκτελέσετε το παραπάνω παράδειγμα, εισάγετε κάθε γραμμή στο κέλυφος της Python, μία προς μία, πατώντας το πλήκτρο Enter αφού πληκτρολογήσετε κάθε γραμμή κώδικα.

Τώρα μπορείτε να ξεκινήσετε να εκτελείτε εντολές Python χρησιμοποιώντας οποιαδήποτε από τις υπηρεσίες ScriptForge. Για παράδειγμα, το παρακάτω απόσπασμα κώδικα χρησιμοποιεί την υπηρεσία UI για να δημιουργήσει ένα κενό έγγραφο Writer.

        ui = CreateScriptService("UI")
        doc = ui.CreateDocument("Writer")

### Δημιουργία αρχείων σεναρίων Python

Μπορείτε να δημιουργήσετε τα δικά σας αρχεία Python και να τα επεξεργαστείτε με τον επεξεργαστή κειμένου που προτιμάτε. Αργότερα, μπορείτε να τους καλέσετε από οποιοδήποτε στοιχείο του LibreOffice.

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

Τώρα μπορείτε να δημιουργήσετε ένα αρχείο κειμένου μέσα στο φάκελο σεναρίων χρήστη Python, για παράδειγμα sf_test.py, και να αρχίσετε να πληκτρολογείτε τα σενάρια σας.

Ακολουθεί ένα απλό παράδειγμα που λαμβάνει την αριθμητική τιμή από ένα κελί Calc και την αυξάνει κατά 1. Απλώς πληκτρολογήστε τον ακόλουθο κώδικα στο αρχείο sf_test.py.

        from scriptforge import CreateScriptService
        doc = CreateScriptService("Calc")

        def increment_cell(args=None):
            value = doc.GetValue("A1")
            value += 1
            doc.SetValue("A1", value)

        g_exportedScripts = (increment_cell, )

Αυτό το παράδειγμα δημιουργεί τη συνάρτηση increment_cell. Σημειώστε ότι το g_exportedScripts είναι μια πλειάδα που λέει ποιες συναρτήσεις θα εμφανίζονται στο LibreOffice ως σενάρια χρήστη.

Για να εκτελέσετε αυτό το σενάριο μέσα από ένα έγγραφο Calc:

1. Δημιουργήστε ή ανοίξτε ένα αρχείο Calc.

2. Εισαγάγετε κάποια αριθμητική τιμή στο κελί "A1" στο τρέχον φύλλο.

3. Μεταβείτε στο Εργαλεία - Μακροεντολές - Εκτέλεση μακροεντολών .

4. Επιλέξτε My Macros - sf_test στον επιλογέα της βιβλιοθήκης. Στη συνέχεια, επιλέξτε τη συνάρτηση increment_cell στον κατάλογο Όνομα μακροεντολής.

5. Πατήστε στο Εκτέλεση. Σημειώστε ότι η τιμή στο κελί "A1" αυξήθηκε κατά 1.

Μπορείτε επίσης να χρησιμοποιήσετε το APSO για να εκτελέσετε σενάρια Python με παρόμοιο τρόπο:

1. Αρχικά ανοίξτε το APSO μεταβαίνοντας στο Εργαλεία - Μακροεντολές - Οργάνωση σεναρίων Python.

2. Στον κατάλογο μακροεντολών, μεταβείτε στο Οι μακροεντολές μου - sf_test - increment_cell.

3. Πατήστε στο Εκτέλεση.

## Εκτέλεση σεναρίων χωριστά από τη διαδικασία του LibreOffice

### Καθορισμός της διαδρομής εγκατάστασης

Το πρώτο βήμα για την εκτέλεση σεναρίων από μια ξεχωριστή διαδικασία είναι να βρείτε το φάκελο όπου είναι εγκατεστημένο το LibreOffice. Υπάρχουν διάφοροι τρόποι για να το κάνετε αυτό, αλλά το ScriptForge παρέχει έναν γρήγορο τρόπο αναγνώρισης της διαδρομής εγκατάστασής σας. Για αυτό, ανοίξτε το κέλυφος Python του APSO και πληκτρολογήστε:

        from scriptforge import CreateScriptService
        fs = CreateScriptService("FileSystem")
        fs.FileNaming = "SYS"
        inst_dir = fs.InstallFolder
        print(inst_dir)

Η έξοδος από τον παραπάνω κώδικα είναι ο βασικός κατάλογος όπου είναι εγκατεστημένο το LibreOffice. Τώρα πρέπει να προσθέσετε τον υποφάκελο "program" στη διαδρομή που προκύπτει. Αυτός είναι ο βασικός φάκελος από τον οποίο θα εκτελείτε σενάρια Python από μια ξεχωριστή διαδικασία.

Για παράδειγμα, ας υποθέσουμε ότι λαμβάνετε /usr/lib/libreoffice/ ως αποτέλεσμα από την εκτέλεση του παραπάνω κώδικα Python. Στη συνέχεια, πρέπει να θεωρήσετε το /usr/lib/libreoffice/program ως τη διαδρομή για την εκτέλεση των σεναρίων Python.

### Ξεκινήστε το LibreOffice με ρυθμίσεις υποδοχής

Για να εκτελέσετε σενάρια Python από μια ξεχωριστή διεργασία, πρέπει να ξεκινήσετε το LibreOffice με μερικές πρόσθετες επιλογές που καθορίζουν το όνομα του κεντρικού υπολογιστή και τη θύρα μέσω της οποίας η εξωτερική διεργασία θα επικοινωνεί με τη διαδικασία του στοιχείου του LibreOffice.

Ανοίξτε τη γραμμή εντολών του λειτουργικού σας συστήματος, μεταβείτε στο φάκελο προγράμματος του καταλόγου εγκατάστασης του LibreOffice και πληκτρολογήστε:

./soffice --accept='socket,host=localhost,port=2021;urp;'

Η παραπάνω εντολή θα ξεκινήσει το LibreOffice με ένα κανάλι επικοινωνίας ανοιχτό, έτσι ώστε άλλες διεργασίες να μπορούν να ανταλλάσσουν μηνύματα μαζί του.

Σημειώστε ότι το προηγούμενο παράδειγμα ανοίγει το κέντρο έναρξης του LibreOffice. Εάν θέλετε να ανοίξετε ένα συγκεκριμένο στοιχείο, για παράδειγμα το Writer, μπορείτε να προσθέσετε τη σημαία --writer στην εντολή, ως εξής.

./soffice --writer --accept='socket,host=localhost,port=2021;urp;'

Λάβετε υπόψη τις παραμέτρους host και port, οι οποίες σε αυτό το παράδειγμα είναι localhost και 2021, αντίστοιχα.

### Εκτέλεση ενός εξωτερικού κελύφους Python

Ξεκινήστε το κέλυφος της Python από τον φάκελο program μέσα στη διαδρομή εγκατάστασης του LibreOffice. Ακολουθήστε τα παραπάνω βήματα για να μάθετε πώς να βρείτε τη διαδρομή εγκατάστασης.

Σε Linux / Mac OS:

$ cd /usr/lib/libreoffice/program

$ python

Σε Windows:

$ cd C:\Program Files\LibreOffice\program\

$ python.exe

Αυτό θα ανοίξει το κέλυφος της Python και τώρα μπορείτε να ξεκινήσετε να πληκτρολογείτε εντολές που θα εκτελεστούν από το LibreOffice. Αλλά πρώτα πρέπει να ρυθμίσετε τη σύνδεση υποδοχής.

        from scriptforge import ScriptForge, CreateScriptService
        ScriptForge(hostname='localhost', port=2021)

Read the section Setting PYTHONPATH below in case of errors importing scriptforge.py or uno.py.

Η δεύτερη γραμμή του παραπάνω κώδικα ορίζει τις ρυθμίσεις host και port, έτσι ώστε το κέλυφος της Python να μπορεί να επικοινωνεί με μια εξελισσόμενη διαδικασία του LibreOffice που ανοίγει με τις ίδιες ρυθμίσεις υποδοχής.

Τώρα μπορείτε να εκτελέσετε άλλες εντολές Python και θα μπορούν να επικοινωνούν με τη διαδικασία του LibreOffice. Για παράδειγμα:

        ui = CreateScriptService("UI")
        bas = CreateScriptService("Basic")
        doc = ui.OpenDocument("~/Documents/myFile.ods")
        bas.MsgBox(doc.DocumentType)

### Setting PYTHONPATH

Depending on your operating system's configuration you will need to set the environment variable PYTHONPATH in order to import the scriptforge.py library, which in turn requires importing the uno.py library.

Use your operating system's file search tool to determine the directory where both these files are located.

For instance, on a default Ubuntu installation both files may be located at:

- scriptforge.py: Located in /usr/lib/libreoffice/program

- uno.py: Located in /usr/lib/python3/dist-packages

In this case, set the environment variable PYTHONPATH as follows before starting the Python interpreter:

export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages

The location of these files will be different for each operating system and LibreOffice installation method.

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

Η βιβλιοθήκη ScriptForge

Βοήθεια δεσμών ενεργειών Python του LibreOffice

Ξεκίνημα του λογισμικού LibreOffice με παραμέτρους