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

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

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

tip

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


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

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

tip

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


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

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

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

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

tip

Εναλλακτικά, μπορείτε να ανοίξετε το 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)
  
note

Διαβάστε την ενότητα Ρύθμιση PYTHONPATH παρακάτω σε περίπτωση σφαλμάτων κατά την εισαγωγή του scriptforge.py, ή του uno .py.


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

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


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

Ορισμός PYTHONPATH

Ανάλογα με τη διαμόρφωση του λειτουργικού σας συστήματος, θα χρειαστεί να ορίσετε τη μεταβλητή περιβάλλοντος PYTHONPATH για να εισαγάγετε τη βιβλιοθήκη scriptforge.py, η οποία με τη σειρά της απαιτεί την εισαγωγή της βιβλιοθήκης uno.py.

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

Για παράδειγμα, σε μια προεπιλεγμένη εγκατάσταση του Ubuntu και τα δύο αρχεία ενδέχεται να βρίσκονται στη διεύθυνση:

Σε αυτήν την περίπτωση, ορίστε τη μεταβλητή περιβάλλοντος PYTHONPATH ως εξής πριν ξεκινήσετε τον διερμηνέα Python:

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

note

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


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