કોડ રન કરો
કોડ રન કરો ઍક્શન JavaScriptનો અમલ કરે છે. તમે કોડ રન કરો ઍક્શનમાં ઇનપુટ તરીકે વર્કફ્લોના અગાઉના સ્ટેપ્સમાંથી ડેટા પાસ કરી શકો છો અને પછીના સ્ટેપ્સમાં ઉપયોગમાં લેવા માટેની વેલ્યૂઓ મેળવી શકો છો.
ફીલ્ડ્સ
કોડ રન કરો ઍક્શન નીચેના ફીલ્ડ્સ ધરાવે છે.
| ફીલ્ડ | વર્ણન |
|---|---|
| ઇનપુટ | જરૂરી છે. અગાઉના સ્ટેપ્સના ડેટાનો કોડ રન કરો ઍક્શનમાં ઇનપુટ તરીકે ઉપયોગ કરવા માટેની GraphQL ક્વેરી. |
| આઉટપુટ | જરૂરી છે. ઍક્શન દ્વારા પરત કરવામાં આવનાર ડેટાનું પ્રતિનિધિત્વ, જે GraphQLની સ્કીમા ડેફિનેશન લૅન્ગ્વેજ (SDL)માં વ્યાખ્યાયિત કરેલ છે. |
| કોડ | જરૂરી છે. JavaScript જેનો કોડ રન કરો ઍક્શન અમલ કરશે. |
ઇનપુટ ડેટા
ઇનપુટ ડેટા એવા સ્ટેપ્સમાંથી પાસ કરી શકાય છે જે કોડ રન કરો ઍક્શન પહેલાં થાય છે. આ ડેટાને શામેલ કરવા માટે, તમે ઇનપુટ ફીલ્ડમાં GraphQL ક્વેરી લખી શકો છો. ક્વેરીમાંથી પરત કરવામાં આવેલ ડેટા export default વડે ચિહ્નિત કરેલા ફંક્શન માટે input આર્ગ્યુમેન્ટ તરીકે ઉપલબ્ધ રહેશે, જેને પ્રણાલી મુજબ main કહેવામાં આવે છે.
ઇનપુટ ક્વેરી એ Flowના પર્યાવરણ ડેટા માટેની ક્વેરી છે નહીં કે શોપિફાઇ એડમિન 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 નામના ચલનો ઉપયોગ કરો, જેને તમે Run code ઍક્શન કન્ફિગરેશનમાં વ્યાખ્યાયિત કરેલ Output સ્કીમા અનુસાર ટાઇપ કરવામાં આવશે. તમે શરતો અને ઍક્શન બંનેમાં આ ચલનો ઉપયોગ કરી શકો છો.
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,
};
}તમે Run code ઍક્શનમાં console.info, console.error, અથવા અન્ય ફંક્શનનો ઉપયોગ કરી શકતા નથી.
ઉદાહરણ
કોડ ઍક્શનના ઉદાહરણો Flow ના ઉદાહરણોની રિપોઝીટરી માં મળી શકે છે.
મર્યાદાઓ
Run code ઍક્શનમાં નીચેની મર્યાદાઓ છે:
- Run code ઍક્શન ECMA2020 JavaScript ને સપોર્ટ કરે છે. તે NodeJS અથવા CommonJS APIs અથવા મોડ્યુલ આયાત કરવાને સપોર્ટ કરતું નથી.
- તમારો કોડ HTTP કૉલ્સ (
fetch) કરી શકતો નથી. - રેન્ડમ અને ઘડિયાળ-આધારિત ફંક્શન્સનો ઉપયોગ કરી શકાતો નથી.
scheduledAtઅથવાcreatedAtજેવો તારીખનો ડેટા, ઇનપુટ તરીકે પસાર કરી શકાય છે. - Console.log બ્રાઉઝર કન્સોલમાં લૉગ થતું નથી.
- પેલોડ સાઇઝ બચાવવા માટે, આઉટપુટ ડેટા પેલોડ માત્ર ડાઉનસ્ટ્રીમ પગલાંઓમાં વપરાતા ચલો રિટર્ન કરે છે.
- તમે Run code ઍક્શનમાં સીધું મેટાફીલ્ડનું ઉપનામ ઉમેરી શકતા નથી. આ પરિપૂર્ણ કરવા માટે, આ પેજ પરનો મેટાફીલ્ડ્સ વિભાગ જુઓ.
આ ઉપરાંત, નીચેની મર્યાદાઓ લાગુ કરવામાં આવે છે:
- ઇનપુટ ડેટાની ક્વેરી 5000 અક્ષરો સુધી મર્યાદિત છે.
- આઉટપુટ ડેટાની સ્કીમા 5000 અક્ષરો સુધી મર્યાદિત છે.
- આઉટપુટ ડેટાનો પેલોડ અને Console.log આઉટપુટ સંયુક્ત રીતે 50KB સુધી મર્યાદિત છે.
- કોડ 50000 અક્ષરોથી લાંબો હોઈ શકે નહીં.
- એક્ઝિક્યુશનનો કુલ સમય 5 સેકન્ડ સુધી મર્યાદિત છે.
- મેમરીનો ઉપયોગ 10MB સુધી મર્યાદિત છે.
ટેમ્પ્લેટ્સ
નવા ઑર્ડર પર મફત (100% ડિસ્કાઉન્ટવાળી) આઇટમ ઉમેરો
જ્યારે આઇટમ સ્ટૉકમાં હોય, ત્યારે આ ટેમ્પ્લેટ નવા ઑર્ડર પર મફત, ડિસ્કાઉન્ટવાળી આઇટમ ઉમેરે છે. તે ઇન્વેન્ટરી તપાસે છે, 100% ડિસ્કાઉન્ટ લાગુ કરે છે અને ગ્રાહકને જાણ કર્યા વિના ઑર્ડરને અપડેટ કરે છે. આ વર્કફ્લો નીચેના દૃશ્યોમાં ઑટોમેશન ઉમેરવામાં મદદ કરી શકે છે:
- ગ્રાહકના ઑર્ડરમાં આશ્ચર્યજનક મફત આઇટમ સામેલ કરીને ગ્રાહકનો સંતોષ વધારો.
- ઑર્ડરમાં મફત નમૂના તરીકે ઉમેરીને નવી અથવા ઓછી જાણીતી પ્રોડક્ટ્સનો પ્રચાર કરો.
- મફત આઇટમનો સમાવેશ કરવા અને તેને ડિસ્કાઉન્ટ આપવાની પ્રક્રિયાને સ્વચાલિત કરીને પ્રમોશનને સુવ્યવસ્થિત કરો.
નિષ્ક્રિય રિટર્ન રદ કરો
ચોક્કસ સમયગાળામાં રિફંડ અથવા રિસ્ટૉક ન થયા હોય તેવા રિટર્નને ઑટોમૅટિક રીતે રદ કરો. ટેમ્પ્લેટ જુઓ
Run code ઍક્શનનો ઉપયોગ કરીને પૂર્વગવાળા ટૅગને પ્રોડક્ટ મેટાફીલ્ડમાં રૂપાંતરિત કરો
આ વર્કફ્લો 'color:' જેવા પૂર્વગથી શરૂ થતા ટૅગ લેશે અને તેમને પ્રોડક્ટ મેટાફીલ્ડ સૂચિમાં ઉમેરશે. તે મેટાફીલ્ડ સૂચિમાં ટૅગ અને હાલની આઇટમ પાર્સ કરવા માટે Run code ઍક્શનનો ઉપયોગ કરે છે. જ્યારે પ્રોડક્ટ બનાવવામાં આવે ત્યારે વર્કફ્લો રન થાય છે, પરંતુ હાલની પ્રોડક્ટ્સ પર જાતે પણ ચલાવી શકાય છે. ટેમ્પ્લેટ જુઓ
જ્યારે કોઈ ગ્રાહક પ્રોડક્ટના બહુવિધ વેરિઅન્ટનો ઑર્ડર કરે ત્યારે નોટિફિકેશન મોકલો
જ્યારે ગ્રાહક સમાન પ્રોડક્ટના બહુવિધ વેરિઅન્ટ ઑર્ડર કરે ત્યારે ઇમેઇલ નોટિફિકેશન મેળવો. ટેમ્પ્લેટ જુઓ
જ્યારે ઑર્ડરમાં બંડલ સામેલ હોય ત્યારે નોટિફિકેશન મોકલો
જ્યારે ઑર્ડર બનાવવામાં આવે ત્યારે આ વર્કફ્લો શરૂ થાય છે અને ઑર્ડરની કોઈપણ પ્રોડક્ટ બંડલના ભાગ રૂપે ખરીદાઈ હતી કે કેમ તે તપાસે છે. જો બંડલ મળે તો બંડલની વિગતો સાથે એક આંતરિક ઇમેઇલ મોકલવામાં આવે છે. વધુમાં તમે કોઈપણ ઉપયોગના કિસ્સા માટે શરૂઆતના બિંદુ તરીકે આ વર્કફ્લોનો ઉપયોગ કરી શકો છો જેને ઑર્ડરમાં બંડલની હાજરી શોધવાની જરૂર હોય. ટેમ્પ્લેટ જુઓ
ઑર્ડરને સંકળાયેલી UTM ઝુંબેશ સાથે ટૅગ કરો
સંકળાયેલી કોઈપણ UTM ઝુંબેશના નામ ધરાવતા ઑર્ડર પર ટૅગ ઉમેરે છે. ટેમ્પ્લેટ જુઓ