GWS - App Scripts
Εφαρμογές Σεναρίων
Οι Εφαρμογές Σεναρίων είναι κώδικας που θα ενεργοποιηθεί όταν ένας χρήστης με άδεια επεξεργαστή έχει πρόσβαση στο έγγραφο με το οποίο συνδέεται ο Κώδικας Εφαρμογής και μετά την αποδοχή του προμηθευτή OAuth. Μπορούν επίσης να οριστούν να εκτελούνται κάθε συγκεκριμένο χρονικό διάστημα από τον ιδιοκτήτη του Κώδικα Εφαρμογής (Μόνιμοτητα).
Δημιουργία Κώδικα Εφαρμογής
Υπάρχουν διάφοροι τρόποι δημιουργίας Κώδικα Εφαρμογής, αν και οι πιο κοινοί είναι από ένα Έγγραφο Google (οποιουδήποτε τύπου) και ως αυτόνομο έργο:
Σενάριο Κώδικα Εφαρμογής
Δημιουργία Google Sheet με Κώδικα Εφαρμογής
Ξεκινήστε δημιουργώντας έναν Κώδικα Εφαρμογής, η σύστασή μου για αυτό το σενάριο είναι να δημιουργήσετε ένα Google Sheet και να πάτε στο Επεκτάσεις > Κώδικας Εφαρμογών
, αυτό θα ανοίξει έναν νέο Κώδικα Εφαρμογής συνδεδεμένο με το φύλλο.
Διαρροή διακριτικού
Για να δώσετε πρόσβαση στο διακριτικό OAuth πρέπει να κάνετε κλικ στο Υπηρεσίες +
και να προσθέσετε εμβέλειες όπως:
AdminDirectory: Πρόσβαση σε χρήστες και ομάδες του καταλόγου (αν ο χρήστης έχει αρκετές άδειες)
Gmail: Για πρόσβαση σε δεδομένα gmail
Drive: Για πρόσβαση σε δεδομένα drive
Google Sheets API: Έτσι λειτουργεί με την ενεργοποίηση
Για να αλλάξετε εσείς οι ίδιοι τις απαιτούμενες εμβέλειες μπορείτε να πάτε στις ρυθμίσεις έργου και να ενεργοποιήσετε: Εμφάνιση του αρχείου μεταδεδομένων "appsscript.json" στον επεξεργαστή
.
Για να αιχμαλωτίσετε το αίτημα, απλώς μπορείτε να εκτελέσετε:
Οι άδειες που ζητούνται για την εκτέλεση του App Script:
Καθώς γίνεται μια εξωτερική αίτηση, το παράθυρο ταυτοποίησης OAuth θα ζητήσει επίσης άδεια για να φτάσει σε εξωτερικά σημεία.
Δημιουργία Trigger
Αφού διαβάσετε το App, κάντε κλικ στο ⏰ Triggers για να δημιουργήσετε ένα trigger. Ως λειτουργία επιλέξτε το getToken
, τρέχει κατά την αναπτυξιακή Head
, στην πηγή γεγονότος επιλέξτε Από φύλλο εργασίας
και τύπο γεγονότος επιλέξτε Κατά το άνοιγμα
ή Κατά την επεξεργασία
(ανάλογα με τις ανάγκες σας) και αποθηκεύστε.
Σημειώστε ότι μπορείτε να ελέγξετε τις εκτελέσεις των App Scripts στην καρτέλα Εκτελέσεις αν θέλετε να εντοπίσετε κάποιο σφάλμα.
Διαμοιρασμός
Για να ενεργοποιήσετε το App Script, ο θύμα χρειάζεται να συνδεθεί με Πρόσβαση Επεξεργαστή.
Το token που χρησιμοποιείται για την εκτέλεση του App Script θα είναι αυτό του δημιουργού του trigger, ακόμα κι αν το αρχείο ανοίγεται ως Επεξεργαστής από άλλους χρήστες.
Κατάχρηση εγγράφων που έχουν κοινοποιηθεί με εμένα
Αν κάποιος σας κοινοποίησε ένα έγγραφο με App Scripts και ένα trigger χρησιμοποιώντας το Head του App Script (όχι μια σταθερή ανάπτυξη), μπορείτε να τροποποιήσετε τον κώδικα του App Script (προσθέτοντας, για παράδειγμα, λειτουργίες κλοπής του τοκέν), να τον αποκτήσετε πρόσβαση και το App Script θα εκτελεστεί με τις άδειες του χρήστη που σάς κοινοποίησε το έγγραφο! (σημειώστε ότι το OAuth token του κατόχου θα έχει ως εύρος πρόσβασης αυτό που δόθηκε κατά τη δημιουργία του trigger).
Ένα ειδοποίηση θα σταλεί στον δημιουργό του σεναρίου υποδεικνύοντας ότι κάποιος τροποποίησε το σενάριο (Τι γίνεται με τη χρήση των δικαιωμάτων του gmail για τη δημιουργία φίλτρου για την αποτροπή της ειδοποίησης;)
Αν ένας επιτιθέμενος τροποποιήσει τις εμβέλειες του App Script, οι ενημερώσεις δεν θα εφαρμοστούν στο έγγραφο μέχρι να δημιουργηθεί ένας νέος trigger με τις αλλαγές. Έτσι, ένας επιτιθέμενος δεν θα μπορεί να κλέψει τον δημιουργό του κατόχου με περισσότερες εμβέλειες από αυτές που ορίστηκαν στο trigger που δημιούργησε.
Αντιγραφή αντί για κοινοποίηση
Όταν δημιουργείτε ένα σύνδεσμο για να μοιραστεί ένα έγγραφο δημιουργείται ένας σύνδεσμος παρόμοιος με αυτόν: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
Αν αλλάξετε το τέλος "/edit" σε "/copy", αντί να το ανοίξετε, το Google θα σας ρωτήσει αν θέλετε να δημιουργήσετε ένα αντίγραφο του εγγράφου:
Αν ο χρήστης το αντιγράψει και το ανοίξει, τότε τόσο τα περιεχόμενα του εγγράφου όσο και τα App Scripts θα αντιγραφούν, ωστόσο τα triggers δεν θα αντιγραφούν, επομένως τίποτα δεν θα εκτελεστεί.
Διαμοιρασμός ως Εφαρμογή Web
Σημειώστε ότι είναι επίσης δυνατό να μοιραστείτε ένα App Script ως εφαρμογή Web (στον Επεξεργαστή του App Script, αναπτύξτε το ως εφαρμογή Web), αλλά θα εμφανιστεί μια ειδοποίηση όπως αυτή:
Ακολουθείται από το συνηθισμένο παράθυρο ταυτοποίησης OAuth που ζητά τις απαιτούμενες άδειες.
Δοκιμή
Μπορείτε να δοκιμάσετε ένα συλλεγμένο τοκέν για να καταχωρίσετε τα emails με:
Λίστα ημερολογίου του χρήστη:
Σενάριο App Script ως Διατήρηση
Μία επιλογή για διατήρηση θα μπορούσε να είναι να δημιουργήσετε ένα έγγραφο και να προσθέσετε έναν εκκινητή για τη λειτουργία getToken και να μοιραστείτε το έγγραφο με τον επιτιθέμενο, έτσι ώστε κάθε φορά που ο επιτιθέμενος ανοίγει το αρχείο εξαγάγει το διαπιστευτή του θύματος.
Είναι επίσης δυνατόν να δημιουργήσετε ένα App Script και να το ρυθμίσετε να εκκινεί κάθε X χρόνο (όπως κάθε λεπτό, ώρα, ημέρα...). Ένας επιτιθέμενος που έχει διαρρεύσει διαπιστευτήρια ή μια συνεδρία ενός θύματος θα μπορούσε να ρυθμίσει ένα χρονοδιακόπτη App Script και να διαρρεύσει ένα πολύ προνομιούχο OAuth διαπιστευτή κάθε μέρα:
Απλά δημιουργήστε ένα App Script, πηγαίνετε στους Εκκινητές, κάντε κλικ στο Προσθήκη Εκκινητή και επιλέξτε ως πηγή γεγονότος το Time-driven και επιλέξτε τις επιλογές που σας ταιριάζουν καλύτερα:
Αυτό θα δημιουργήσει ένα email ειδοποίησης ασφαλείας και ένα μήνυμα ειδοποίησης στο κινητό σας γι' αυτό.
Παράκαμψη Μη Επιβεβαιωμένης Κοινής Πρόσβασης Έγγραφου
Επιπλέον, αν κάποιος μοιράστηκε μαζί σας ένα έγγραφο με πρόσβαση επεξεργασίας, μπορείτε να δημιουργήσετε App Scripts μέσα στο έγγραφο και ο ΚΑΤΟΧΟΣ (δημιουργός) του εγγράφου θα είναι ο ιδιοκτήτης του App Script.
Αυτό σημαίνει ότι ο δημιουργός του εγγράφου θα εμφανίζεται ως δημιουργός οποιουδήποτε App Script που δημιουργεί οποιοσδήποτε με πρόσβαση επεξεργασίας μέσα σε αυτό.
Αυτό σημαίνει επίσης ότι το App Script θα είναι εμπιστευμένο από το περιβάλλον Workspace του δημιουργού του εγγράφου.
Αυτό σημαίνει επίσης ότι αν ένα App Script υπήρχε ήδη και οι άνθρωποι έχουν χορηγήσει πρόσβαση, οποιοσδήποτε με Δικαιώματα Επεξεργασίας στο έγγραφο μπορεί να το τροποποιήσει και να καταχραστεί αυτήν την πρόσβαση.
Για να καταχραστείτε αυτό, χρειάζεστε επίσης άτομα που θα εκκινήσουν το App Script. Και ένα καλό κόλπο είναι να δημοσιεύσετε το σενάριο ως web εφαρμογή. Όταν οι άνθρωποι που έχουν ήδη χορηγήσει πρόσβαση στο App Script αποκτήσουν πρόσβαση στην ιστοσελίδα, θα εκκινήσουν το App Script (αυτό λειτουργεί επίσης χρησιμοποιώντας ετικέτες <img>
).
Last updated