Εκτέλεση κώδικα

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

Πεδία

Η ενέργεια Εκτέλεση κώδικα περιέχει τα ακόλουθα πεδία.

Πεδία που χρησιμοποιούνται στην ενέργεια «Εκτέλεση κώδικα».
ΠεδίοΠεριγραφή
ΕίσοδοςΥποχρεωτικό. Ένα ερώτημα GraphQL για τη χρήση δεδομένων από προηγούμενα βήματα ως δεδομένα εισόδου στην ενέργεια Εκτέλεση κώδικα.
ΈξοδοςΥποχρεωτικό. Μια αναπαράσταση των δεδομένων που θα επιστραφούν από την ενέργεια, η οποία ορίζεται στη γλώσσα ορισμού σχήματος (SDL) του GraphQL.
ΚώδικαςΥποχρεωτικό. Ο κώδικας JavaScript που θα εκτελέσει η ενέργεια Εκτέλεση κώδικα.

Δεδομένα εισόδου

Τα δεδομένα εισόδου μπορούν να μεταβιβαστούν από βήματα που προηγούνται της ενέργειας Εκτέλεση κώδικα. Για να συμπεριλάβετε αυτά τα δεδομένα, μπορείτε να γράψετε ένα ερώτημα GraphQL στο πεδίο Είσοδος. Τα δεδομένα που επιστρέφονται από το ερώτημα θα είναι διαθέσιμα ως το όρισμα input στη συνάρτηση που έχει επισημανθεί με export default, η οποία κατά σύμβαση ονομάζεται main.

Το ερώτημα εισόδου είναι ένα ερώτημα για τα δεδομένα περιβάλλοντος του Flow και όχι ένα ερώτημα στο Shopify Admin API. Επομένως, δεν μπορείτε να εισαγάγετε ένα ερώτημα Shopify στα δεδομένα εισόδου. Επιπλέον, το Flow χειρίζεται τα edges και τα nodes στο ερώτημα, επομένως δεν χρειάζεται να προσθέσετε αυτά ή άλλη σύνταξη σελιδοποίησης στο ερώτημά σας.

Ένα παράδειγμα εισόδου που λαμβάνει μια σημείωση παραγγελίας και τον τίτλο ενός είδους γραμμής:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Αυτά τα δεδομένα μετατρέπονται σε μια μεταβλητή input που μπορεί να χρησιμοποιηθεί στον κώδικα:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

Τα δεδομένα εισόδου μπορούν επίσης να αποδομηθούν στην υπογραφή της συνάρτησης:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

Μετα-πεδία

Για να αποκτήσετε πρόσβαση σε μεμονωμένες τιμές μετα-πεδίων στην ενέργεια «Εκτέλεση κώδικα», πρέπει πρώτα να προσθέσετε το μετα-πεδίο στα δεδομένα περιβάλλοντος του Flow. Αυτό μπορεί να γίνει σε οποιαδήποτε ενέργεια ή συνθήκη εκτός από την ενέργεια «Εκτέλεση κώδικα». Για παράδειγμα, μπορείτε να προσθέσετε μια ενέργεια Καταγραφή εξόδου και, στη συνέχεια, να ακολουθήσετε τις οδηγίες για να προσθέσετε το μετα-πεδίο.

Αφού προστεθεί ένα μετα-πεδίο στο περιβάλλον της ροής εργασίας, μπορείτε να αποκτήσετε πρόσβαση σε αυτό στην ενέργεια «Εκτέλεση κώδικα». Για παράδειγμα, ας υποθέσουμε ότι προσθέσατε ένα μετα-πεδίο Παραγγελίας με το ψευδώνυμο giftMessage. Στη συνέχεια, μπορείτε να αποκτήσετε πρόσβαση σε αυτό στο ερώτημα εισόδου σας:

{
  order {
    giftMessage {
      value
    }
  }
}

Δεδομένα εξόδου

Η ενέργεια Εκτέλεση κώδικα μπορεί να επιστρέψει προσαρμοσμένα δεδομένα. Για να ορίσετε τον τύπο των δεδομένων που θα επιστρέψει ο κώδικας, χρησιμοποιήστε το πεδίο Έξοδος και τη γλώσσα ορισμού σχήματος (SDL) της GraphQL. Οι υποστηριζόμενοι τύποι εξόδου είναι String, Int, Float, Boolean και ID, οι οποίοι ακολουθούν τις προδιαγραφές SDL για τον τρόπο με τον οποίο καθορίζονται τα απαιτούμενα πεδία, οι λίστες και τα προσαρμοσμένα δεδομένα.

Για παράδειγμα, για να επιστρέψετε μια συμβολοσειρά με το όνομα giftMessage και έναν αριθμό με το όνομα totalGifts:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

Τα σχόλια είναι προαιρετικά, αλλά θα χρησιμοποιηθούν για την περιγραφή των δεδομένων στο UI του Flow. Για να εξαγάγετε αυτά τα δεδομένα στον κώδικα JavaScript, επιστρέψτε ένα αντικείμενο που αντιστοιχεί στον τύπο:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Μπορείτε επίσης να ορίσετε έναν προσαρμοσμένο τύπο για την επιστροφή πιο σύνθετων δεδομένων. Για παράδειγμα, για να επιστρέψετε έναν τύπο με το όνομα Gift που περιέχει μια συμβολοσειρά με το όνομα message και έναν αριθμό με το όνομα amount:

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

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

Console.log

Μπορείτε να χρησιμοποιήσετε το console.log για την εξαγωγή δεδομένων στο αρχείο καταγραφής εκτέλεσης ροής εργασίας του Flow για σκοπούς αντιμετώπισης προβλημάτων. Η έξοδος θα είναι ορατή στο αρχείο καταγραφής εκτέλεσης για τη ροή εργασίας. Για παράδειγμα, τα παρακάτω είναι έγκυρα:

export default function main(input) {
  console.log('Hello, world!');
  //Hello, world!
  console.log(input);
  // { order: { note: 'Hello', lineItems: [ { title: 'World' } ] } }
  console.log(input.order, 'is the order');
  // { note: 'Hello', lineItems: [ { title: 'World' } ] }
  // is the order

  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Δεν μπορείτε να χρησιμοποιήσετε τις συναρτήσεις console.info, console.error ή άλλες συναρτήσεις στην ενέργεια Εκτέλεση κώδικα.

Παράδειγμα

Μπορείτε να βρείτε παραδείγματα για την ενέργεια κώδικα στο αποθετήριο παραδειγμάτων του Flow.

Περιορισμοί

Η ενέργεια Εκτέλεση κώδικα έχει τους ακόλουθους περιορισμούς:

  • Η ενέργεια Εκτέλεση κώδικα υποστηρίζει ECMA2020 JavaScript. Δεν υποστηρίζει τα API του NodeJS ή του CommonJS ούτε την εισαγωγή ενοτήτων (modules).
  • Ο κώδικάς σας δεν μπορεί να πραγματοποιεί κλήσεις HTTP (fetch).
  • Δεν μπορούν να χρησιμοποιηθούν τυχαίες συναρτήσεις και συναρτήσεις που βασίζονται στο ρολόι. Δεδομένα ημερομηνίας, όπως scheduledAt ή createdAt, μπορούν να περαστούν ως είσοδος.
  • Το Console.log δεν πραγματοποιεί καταγραφή στην κονσόλα του προγράμματος περιήγησης.
  • Για την εξοικονόμηση του μεγέθους του payload, το payload των δεδομένων εξόδου επιστρέφει μόνο τις μεταβλητές που χρησιμοποιούνται στα επόμενα βήματα.
  • Δεν μπορείτε να προσθέσετε απευθείας ένα ψευδώνυμο μετα-πεδίου στην ενέργεια Εκτέλεση κώδικα. Για να το πετύχετε αυτό, ανατρέξτε στην ενότητα Μετα-πεδία σε αυτήν τη σελίδα.

Επιπλέον, ισχύουν τα ακόλουθα όρια:

  • Το ερώτημα δεδομένων εισόδου περιορίζεται σε 5.000 χαρακτήρες.
  • Το σχήμα δεδομένων εξόδου περιορίζεται σε 5.000 χαρακτήρες.
  • Το payload δεδομένων εξόδου και η έξοδος του Console.log περιορίζονται συνδυαστικά σε 50 KB.
  • Ο κώδικας δεν μπορεί να υπερβαίνει τους 50.000 χαρακτήρες.
  • Η συνολική διάρκεια εκτέλεσης περιορίζεται σε 5 δευτερόλεπτα.
  • Η χρήση μνήμης περιορίζεται σε 10 MB.

Πρότυπα

Προσθήκη δωρεάν κομματιού (με έκπτωση 100%) σε νέες παραγγελίες

Αυτό το πρότυπο προσθέτει ένα δωρεάν κομμάτι, με έκπτωση, σε νέες παραγγελίες, όταν το κομμάτι είναι σε απόθεμα. Ελέγχει το απόθεμα, εφαρμόζει έκπτωση 100% και ενημερώνει την παραγγελία χωρίς να ειδοποιεί τον πελάτη. Αυτή η ροή εργασίας μπορεί να βοηθήσει στην προσθήκη αυτοματοποίησης στα ακόλουθα σενάρια:

  • Βελτίωση της ικανοποίησης των πελατών με τη συμπερίληψη ενός δωρεάν κομματιού-έκπληξη στην παραγγελία τους.
  • Προώθηση νέων ή λιγότερο γνωστών προϊόντων με την προσθήκη τους ως δωρεάν δειγμάτων στις παραγγελίες.
  • Βελτιστοποίηση των προωθητικών ενεργειών με την αυτοματοποίηση της συμπερίληψης και της έκπτωσης των δωρεάν κομματιών.

Προβολή προτύπου

Ακύρωση ανενεργών επιστροφών

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

Μετατροπή ετικετών με πρόθεμα σε μετα-πεδίο προϊόντος μέσω της ενέργειας Εκτέλεση κώδικα

Αυτή η ροή εργασίας λαμβάνει ετικέτες που ξεκινούν με ένα πρόθεμα, όπως 'color:', και τις προσθέτει σε μια λίστα μετα-πεδίων προϊόντος. Χρησιμοποιεί την ενέργεια Εκτέλεση κώδικα για την ανάλυση των ετικετών και των υπαρχόντων στοιχείων στη λίστα μετα-πεδίων. Η ροή εργασίας εκτελείται όταν δημιουργείται ένα προϊόν, αλλά μπορεί να εκτελεστεί και μη αυτόματα σε υπάρχοντα προϊόντα. Προβολή προτύπου

Αποστολή ειδοποίησης όταν ένας πελάτης παραγγέλνει πολλαπλές παραλλαγές ενός προϊόντος

Λάβετε ειδοποίηση μέσω email όταν ένας πελάτης παραγγέλνει πολλαπλές παραλλαγές του ίδιου προϊόντος. Προβολή προτύπου

Αποστολή ειδοποίησης όταν η παραγγελία περιέχει ένα σετ

Αυτή η ροή εργασίας ξεκινά όταν δημιουργείται μια παραγγελία και ελέγχει εάν κάποιο από τα προϊόντα της παραγγελίας αγοράστηκε ως μέρος ενός σετ. Εάν βρεθεί, αποστέλλεται ένα εσωτερικό email με τις λεπτομέρειες του σετ. Επιπλέον, μπορείτε να χρησιμοποιήσετε αυτήν τη ροή εργασίας ως σημείο εκκίνησης για οποιαδήποτε περίπτωση χρήσης που απαιτεί τον εντοπισμό της παρουσίας ενός σετ μέσα σε μια παραγγελία. Προβολή προτύπου

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

Προσθέτει ετικέτες σε παραγγελίες που περιέχουν τα ονόματα τυχόν συσχετισμένων καμπανιών UTM. Προβολή προτύπου