कोड चलाएं
'कोड चलाएं' कार्रवाई JavaScript को निष्पादित करती है. आप वर्कफ़्लो के पिछले चरणों से डेटा को 'कोड चलाएं' कार्रवाई में इनपुट के रूप में पास कर सकते हैं और बाद के चरणों में उपयोग किए जाने वाले मान वापस कर सकते हैं.
फ़ील्ड.
'कोड चलाएं' कार्रवाई में निम्नलिखित फ़ील्ड शामिल हैं.
| फ़ील्ड | विवरण |
|---|---|
| इनपुट | ज़रूरी है. 'कोड चलाएं' कार्रवाई में इनपुट के रूप में पिछले चरणों से डेटा का उपयोग करने के लिए एक GraphQL क्वेरी. |
| आउटपुट | ज़रूरी है. GraphQL के स्कीमा डेफ़िनिशन लैंग्वेज (SDL) में परिभाषित, कार्रवाई द्वारा लौटाए जाने वाले डेटा का निरूपण. |
| कोड | ज़रूरी है. वह JavaScript जिसे 'कोड चलाएं' कार्रवाई निष्पादित करेगी. |
इनपुट डेटा.
इनपुट डेटा को उन चरणों से पास किया जा सकता है जो 'कोड चलाएं' कार्रवाई से पहले होते हैं. इस डेटा को शामिल करने के लिए, आप इनपुट फ़ील्ड में एक GraphQL क्वेरी लिख सकते हैं. क्वेरी से लौटाया गया डेटा export default से चिह्नित फ़ंक्शन के लिए input तर्क के रूप में उपलब्ध होगा, जिसे परंपरागत रूप से 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
}
}
}आउटपुट डेटा.
कोड चलाएं कार्रवाई कस्टम डेटा वापस कर सकती है। कोड द्वारा वापस किए जाने वाले डेटा के प्रकार को परिभाषित करने के लिए, आउटपुट फ़ील्ड और 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!
}इस कार्रवाई के बाद के चरणों में इस डेटा तक पहुंचने के लिए, कोड चलाएं नामक वैरिएबल का उपयोग करें, जिसे आपके द्वारा कोड चलाएं कार्रवाई कॉन्फ़िगरेशन में परिभाषित `आउटपुट` स्कीमा के अनुसार टाइप किया जाएगा। आप इस वैरिएबल का उपयोग स्थितियों और कार्रवाइयों दोनों में कर सकते हैं।
Console.log
आप समस्या हल करने के उद्देश्यों के लिए Flow के वर्कफ़्लो रन लॉग में डेटा आउटपुट करने के लिए `console.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` या अन्य फ़ंक्शन का उपयोग नहीं कर सकते।
उदाहरण
कोड कार्रवाई के लिए उदाहरण Flow उदाहरण रिपॉजिटरी में मिल सकते हैं।
सीमाएं
कोड चलाएं कार्रवाई में निम्नलिखित सीमाएं हैं:
- कोड चलाएं कार्रवाई ECMA2020 JavaScript का समर्थन करती है। यह NodeJS या CommonJS API या मॉड्यूल आयात करने का समर्थन नहीं करती है।
- आपका कोड HTTP कॉल (
fetch) नहीं कर सकता। - रैंडम और घड़ी-आधारित फ़ंक्शन का उपयोग नहीं किया जा सकता है। तारीख का डेटा, जैसे कि `scheduledAt` या `createdAt`, इनपुट के रूप में पास किया जा सकता है।
- Console.log ब्राउज़र कंसोल में लॉग नहीं करता है।
- पेलोड का आकार बचाने के लिए, आउटपुट डेटा पेलोड केवल डाउनस्ट्रीम चरणों में उपयोग किए गए वैरिएबल को ही लौटाता है।
- आप सीधे कोड चलाएं कार्रवाई में मेटाफ़ील्ड उपनाम नहीं जोड़ सकते। इसे पूरा करने के लिए, इस पेज पर मेटाफ़ील्ड सेक्शन की समीक्षा करें।
इसके अलावा, निम्नलिखित सीमाएं लागू हैं:
- इनपुट डेटा क्वेरी 5000 वर्णों तक सीमित है.
- आउटपुट डेटा स्कीमा 5000 वर्णों तक सीमित है.
- आउटपुट डेटा पेलोड और Console.log आउटपुट संयुक्त रूप से 50KB तक सीमित हैं.
- कोड 50000 वर्णों से लंबा नहीं हो सकता.
- कुल निष्पादन अवधि 5 सेकंड तक सीमित है.
- मेमोरी उपयोग 10MB तक सीमित है.
टेम्पलेट
नए ऑर्डर में मुफ़्त (100% छूट वाला) आइटम जोड़ें
यह टेम्पलेट नए ऑर्डर में तब एक मुफ़्त, छूट वाला आइटम जोड़ता है, जब आइटम स्टॉक में हो। यह इन्वेंटरी की जांच करता है, 100% छूट लागू करता है और ग्राहक को सूचित किए बिना ऑर्डर अपडेट करता है। यह वर्कफ़्लो निम्नलिखित परिदृश्यों में ऑटोमेशन जोड़ने में मदद कर सकता है:
- उनके ऑर्डर में एक सरप्राइज़ फ़्री आइटम शामिल करके ग्राहक की संतुष्टि बढ़ाएं।
- नए या कम-ज्ञात प्रोडक्ट को ऑर्डर में मुफ़्त सैंपल के रूप में जोड़कर प्रमोट करें।
- मुफ़्त आइटम को शामिल करने और छूट देने को ऑटोमेट करके प्रमोशन को सुव्यवस्थित करें।
निष्क्रिय रिटर्न को रद्द करें
एक निश्चित अवधि के भीतर रिफंड या रीस्टॉक नहीं किए गए रिटर्न को स्वचालित रूप से रद्द करें। टेम्पलेट देखें
कोड चलाएं कार्रवाई का उपयोग करके प्रीफ़िक्स वाले टैग को प्रोडक्ट मेटाफ़ील्ड में बदलें
यह वर्कफ़्लो उन टैग को लेता है जो 'color:' जैसे प्रीफ़िक्स से शुरू होते हैं और उन्हें प्रोडक्ट मेटाफ़ील्ड सूची में जोड़ देता है। यह मेटाफ़ील्ड सूची में टैग और मौजूदा आइटम को पार्स करने के लिए 'कोड चलाएं' कार्रवाई का उपयोग करता है। वर्कफ़्लो तब चलता है जब कोई प्रोडक्ट बनाया जाता है, लेकिन इसे मौजूदा प्रोडक्ट पर मैन्युअल रूप से चलाया जा सकता है। टेम्पलेट देखें
जब कोई ग्राहक किसी प्रोडक्ट के कई प्रकार ऑर्डर करे, तो सूचना भेजें
जब कोई ग्राहक एक ही प्रोडक्ट के कई प्रकार ऑर्डर करे, तो एक ईमेल सूचना पाएं। टेम्पलेट देखें
जब ऑर्डर में कोई बंडल हो, तो सूचना भेजें
यह वर्कफ़्लो तब शुरू होता है जब कोई ऑर्डर बनाया जाता है और यह जांचता है कि ऑर्डर में कोई भी प्रोडक्ट बंडल के हिस्से के रूप में खरीदा गया था या नहीं। यदि ऐसा कोई प्रोडक्ट पाया जाता है, तो बंडल की जानकारी के साथ एक आंतरिक ईमेल भेजा जाता है। इसके अतिरिक्त, आप इस वर्कफ़्लो का उपयोग किसी भी ऐसे यूज़ केस के लिए एक शुरुआती बिंदु के रूप में कर सकते हैं, जिसे किसी ऑर्डर में बंडल की मौजूदगी का पता लगाने की ज़रूरत होती है। टेम्पलेट देखें
संबद्ध UTM कैम्पेन के साथ ऑर्डर को टैग करें
उन ऑर्डर में टैग जोड़ता है जिनमें किसी भी संबद्ध UTM कैम्पेन के नाम शामिल होते हैं। टेम्पलेट देखें