კოდის გაშვება
ქმედება კოდის გაშვება ასრულებს JavaScript-ს. სამუშაო პროცესის წინა ნაბიჯებიდან მიღებული მონაცემები შეგიძლია გამოიყენო ქმედებაში კოდის გაშვება როგორც შეყვანის მონაცემი და დააბრუნო მნიშვნელობები შემდგომ ნაბიჯებში გამოსაყენებლად.
ველები
ქმედება კოდის გაშვება შეიცავს შემდეგ ველებს.
| ველი | აღწერა |
|---|---|
| შეყვანა | სავალდებულოა. GraphQL-ის მოთხოვნა წინა ნაბიჯებიდან მონაცემების გამოსაყენებლად, როგორც კოდის გაშვება ქმედების შეყვანის მონაცემი. |
| გამოტანა | სავალდებულოა. ქმედების მიერ დასაბრუნებელი მონაცემების რეპრეზენტაცია, რომელიც განსაზღვრულია GraphQL-ის სქემის განმარტების ენით (SDL). |
| კოდი | სავალდებულოა. 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-ს გარემოს მონაცემებში. ამის გაკეთება შესაძლებელია ნებისმიერ ქმედებაში ან პირობაში, გარდა კოდის გაშვებისა. მაგალითად, შეგიძლია დაამატო ქმედება გამოტანის აღრიცხვა და შემდეგ მიჰყვე ინსტრუქციებს მეტაველის დასამატებლად.
მას შემდეგ, რაც მეტაველი დაემატება სამუშაო პროცესის გარემოს, მასზე წვდომას შეძლებ Run code-ში. მაგალითად, დავუშვათ, დაამატე შეკვეთის მეტაველი ფსევდონიმით giftMessage. ამის შემდეგ შეძლებ მასზე წვდომას შეყვანის მოთხოვნაში:
{
order {
giftMessage {
value
}
}
}გამომავალი მონაცემები
Run code-ის ქმედებას შეუძლია დააბრუნოს მორგებული მონაცემები. მონაცემების ტიპის განსასაზღვრად, რომლებსაც კოდი დააბრუნებს, გამოიყენე ველი Output და GraphQL-ის სქემის განმარტების ენა (SDL). მხარდაჭერილი გამომავალი ტიპებია 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!
}კომენტარები არასავალდებულოა, მაგრამ გამოყენებული იქნება Flow-ის UI-ში მონაცემების აღსაწერად. 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!
}ამ ქმედების მომდევნო ნაბიჯებში მონაცემებზე წვდომისთვის გამოიყენე ცვლადი სახელად Run code, რომელსაც მიენიჭება ტიპი Output სქემის მიხედვით, რომელსაც განსაზღვრავ Run code ქმედების კონფიგურაციაში. შეგიძლია გამოიყენო ეს ცვლადი როგორც პირობებში, ასევე ქმედებებში.
Console.log
შეგიძლია გამოიყენო console.log ხარვეზების აღმოსაფხვრელად Flow-ის სამუშაო პროცესის გაშვების ჟურნალში მონაცემების გამოსატანად. გამომავალი მონაცემები ხილული იქნება სამუშაო პროცესის გაშვების ჟურნალში (Run log). მაგალითად, შემდეგი ვალიდურია:
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 ან სხვა ფუნქციების გამოყენება Run code ქმედებაში.
მაგალითი
კოდის ქმედების მაგალითები შეგიძლია იხილო Flow-ის მაგალითების რეპოზიტორიუმში.
შეზღუდვები
Run code-ის ქმედებას აქვს შემდეგი შეზღუდვები:
- Run code ქმედებას აქვს ECMA2020 JavaScript-ის მხარდაჭერა. მას არ აქვს NodeJS-ის ან CommonJS API-ების, ან მოდულების იმპორტირების მხარდაჭერა.
- შენს კოდს არ შეუძლია HTTP ზარების განხორციელება (
fetch). - შემთხვევითი და საათზე დაფუძნებული ფუნქციების გამოყენება არ შეიძლება. თარიღის მონაცემები, როგორიცაა
scheduledAtანcreatedAt, შეიძლება გადაიცეს, როგორც შეყვანის მონაცემები. - Console.log არ იწერება ბრაუზერის კონსოლში.
- დატვირთვის ზომის დასაზოგად, გამომავალი მონაცემების დატვირთვა აბრუნებს მხოლოდ იმ ცვლადებს, რომლებიც გამოიყენება მომდევნო ნაბიჯებში.
- არ შეგიძლია დაამატო მეტაველის ფსევდონიმი უშუალოდ Run code ქმედებაში. ამის მისაღწევად, იხილე ამ გვერდზე მოცემული განყოფილება მეტაველები.
გარდა ამისა, მოქმედებს შემდეგი შეზღუდვები:
- შეყვანის მონაცემების მოთხოვნა შეზღუდულია 5000 სიმბოლოთი.
- გამომავალი მონაცემების სქემა შეზღუდულია 5000 სიმბოლოთი.
- გამომავალი მონაცემების დატვირთვა და Console.log-ის გამომავალი მონაცემები ჯამში შეზღუდულია 50 KB-ით.
- კოდი არ შეიძლება იყოს 50 000 სიმბოლოზე მეტი.
- გაშვების ჯამური ხანგრძლივობა შეზღუდულია 5 წამით.
- მეხსიერების გამოყენება შეზღუდულია 10 MB-ით.
შაბლონები
ახალ შეკვეთებზე უფასო (100%-იანი ფასდაკლებით) ერთეულის დამატება
ეს შაბლონი ამატებს უფასო, ფასდაკლებულ ერთეულს ახალ შეკვეთებში, როდესაც ერთეული მარაგშია. ის ამოწმებს მარაგს, იყენებს 100%-იან ფასდაკლებას და აახლებს შეკვეთას მომხმარებლისთვის შეტყობინების გარეშე. ეს სამუშაო პროცესი დაგეხმარება შემდეგი სცენარების ავტომატიზაციაში:
- გააუმჯობესე მომხმარებლის კმაყოფილება მათ შეკვეთაში მოულოდნელი უფასო ერთეულის ჩართვით.
- შეუწყვე ხელი ახალი ან ნაკლებად ცნობილი პროდუქტების პოპულარიზაციას შეკვეთებში მათი უფასო ნიმუშების სახით დამატებით.
- გაამარტივე აქციები უფასო ერთეულების დამატებისა და ფასდაკლების ავტომატიზაციით.
არააქტიური დაბრუნებების გაუქმება
ავტომატურად გააუქმე დაბრუნება, რომლის თანხაც არ დაბრუნებულა ან არ შევსებულა მარაგში გარკვეული პერიოდის განმავლობაში. შაბლონის ნახვა
პრეფიქსის მქონე თეგების კონვერტირება პროდუქტის მეტაველად Run code ქმედების გამოყენებით
ეს სამუშაო პროცესი აიღებს თეგებს, რომლებიც იწყება პრეფიქსით, როგორიცაა 'color:' და დაამატებს მათ პროდუქტის მეტაველების სიაში. ის იყენებს Run code ქმედებას მეტაველების სიაში თეგებისა და არსებული ერთეულების გასაშიფრად (parse). სამუშაო პროცესი ეშვება პროდუქტის შექმნისას, მაგრამ შეიძლება ხელითაც გაეშვას არსებულ პროდუქტებზე. შაბლონის ნახვა
შეტყობინების გაგზავნა, როდესაც მომხმარებელი უკვეთავს პროდუქტის რამდენიმე ვარიანტს
მიიღე შეტყობინება ელფოსტით, როდესაც მომხმარებელი უკვეთავს ერთი და იმავე პროდუქტის რამდენიმე ვარიანტს. შაბლონის ნახვა
შეტყობინების გაგზავნა, როდესაც შეკვეთა შეიცავს ნაკრებს
ეს სამუშაო პროცესი იწყება შეკვეთის შექმნისას და ამოწმებს, იყო თუ არა შეკვეთაში რომელიმე პროდუქტი შეძენილი ნაკრების ნაწილად. თუ აღმოჩნდება, იგზავნება შიდა ელფოსტა ნაკრების დეტალებით. გარდა ამისა, შეგიძლია გამოიყენო ეს სამუშაო პროცესი საწყის წერტილად ნებისმიერი შემთხვევისთვის, რომელიც მოითხოვს შეკვეთაში ნაკრების არსებობის აღმოჩენას. შაბლონის ნახვა
შეკვეთების დათეგვა დაკავშირებული UTM კამპანიით
ამატებს თეგებს შეკვეთებზე, რომლებიც შეიცავს ნებისმიერი დაკავშირებული UTM კამპანიის სახელს. შაბლონის ნახვა