Kód futtatása
A Kód futtatása művelet JavaScriptet hajt végre. A munkafolyamat korábbi lépéseiből származó adatokat bemenetként átadhatja a Kód futtatása műveletnek, és az értékeket visszaadhatja a későbbi lépésekben való felhasználásra.
Ezen az oldalon
Mezők
A Kód futtatása művelet a következő mezőket tartalmazza.
| Mező | Leírás |
|---|---|
| Bemenet | Kötelező. Egy GraphQL-lekérdezés, amellyel a korábbi lépésekből származó adatok bemenetként használhatók a Kód futtatása művelethez. |
| Kimenet | Kötelező. A művelet által visszaadandó adatok ábrázolása, a GraphQL séma-definíciós nyelvén (SDL) meghatározva. |
| Kód | Kötelező. Az a JavaScript, amelyet a Kód futtatása művelet végrehajt. |
Bemeneti adatok
A Kód futtatása művelet előtt lezajló lépésekből bemeneti adatok adhatók át. Ezen adatok belefoglalásához írhat egy GraphQL-lekérdezést a Bemenet mezőbe. A lekérdezésből visszaadott adatok az export default-tal megjelölt, konvenció szerint main nevű függvény input argumentumaként lesznek elérhetők.
A bemeneti lekérdezés a Flow környezeti adataira vonatkozó lekérdezés, nem pedig a Shopify Admin API-ra irányuló lekérdezés. Ezért nem szúrhat be Shopify-lekérdezést a bemeneti adatokba. Ezenkívül a Flow kezeli a lekérdezésben az edges és nodes elemeket, így nem kell ezeket vagy más lapozási szintaxist hozzáadnia a lekérdezéshez.
Példa egy olyan bemenetre, amely lekéri a rendelési megjegyzést és egy sortétel címét:
{
order {
note
lineItems {
title
}
}
}Ezek az adatok egy input változóvá alakulnak, amely felhasználható a kódban:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}A bemenetek a függvényaláírásban is destrukturálhatók:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metamezők
Az egyes metamezőértékek „Kód futtatása” műveletben való eléréséhez először hozzá kell adnia a metamezőt a Flow környezeti adataihoz. Ez a „Kód futtatása” műveleten kívül bármely más műveletben vagy feltételben megtehető. Például hozzáadhat egy Kimenet naplózása műveletet, majd követheti az utasításokat a metamező hozzáadásához.
Miután egy metamezőt hozzáadott a munkafolyamat-környezethez, elérheti azt a „Kód futtatása” műveletben. Tegyük fel például, hogy hozzáadott egy rendelési metamezőt giftMessage aliasnévvel. Ekkor a bemeneti lekérdezésben a következőképpen érheti el:
{
order {
giftMessage {
value
}
}
}Kimeneti adatok
A Kód futtatása művelet egyéni adatokat adhat vissza. A kód által visszaadott adatok típusának meghatározásához használja a Kimenet mezőt és a GraphQL sémadefiniáló nyelvét (SDL). A támogatott kimeneti típusok a String, az Int, a Float, a Boolean és az ID, amelyek a kötelező mezők, listák és egyéni adatok megadására vonatkozóan követik az SDL specifikációját.
Például egy giftMessage nevű karakterlánc és egy totalGifts nevű szám visszaadásához:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}A megjegyzések megadása nem kötelező, de ezek írják le az adatokat a Flow felhasználói felületén. Ha ezeket az adatokat a JavaScript-kódban szeretné kimenetként megadni, adjon vissza egy, a típusnak megfelelő objektumot:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Összetettebb adatok visszaadásához egyéni típust is definiálhat. Például egy Gift nevű típus visszaadásához, amely egy message nevű karakterláncot és egy amount nevű számot tartalmaz:
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!
}Ha hozzá szeretne férni ezekhez az adatokhoz a műveletet követő lépésekben, használja a Kód futtatása nevű változót, amelynek típusa a Kód futtatása művelet konfigurációjában megadott Output séma szerint lesz meghatározva. Ezt a változót feltételekben és műveletekben is használhatja.
Console.log
A console.log használatával hibaelhárítási célból adatokat küldhet a Flow munkafolyamat-futtatási naplójába. A kimenet látható lesz a munkafolyamat futtatási naplójában. Például a következők érvényesek:
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,
};
}A Kód futtatása műveletben nem használhatja a console.info, a console.error vagy más funkciókat.
Példa
A kódműveletre vonatkozó példák a Flow-példák adattárában találhatók.
Korlátozások
A Kód futtatása műveletre a következő korlátozások vonatkoznak:
- A Kód futtatása művelet támogatja az ECMA2020 JavaScriptet. Nem támogatja a NodeJS vagy a CommonJS API-kat, illetve a modulok importálását.
- A kódja nem indíthat HTTP-hívásokat (
fetch). - Véletlenszerű és óraalapú funkciók nem használhatók. A dátumadatok, például a
scheduledAtvagy acreatedAt, bemenetként átadhatók. - A Console.log nem a böngészőkonzolba naplóz.
- Az adatcsomag méretének csökkentése érdekében a kimeneti adatcsomag csak a további lépésekben használt változókat adja vissza.
- Nem adhat hozzá metamezőaliast közvetlenül a Kód futtatása műveletben. Ehhez tekintse meg az ezen az oldalon található Metamezők szakaszt.
Ezenkívül a következő korlátozások érvényesek:
- A bemeneti adatlekérdezés legfeljebb 5000 karakter hosszú lehet.
- A kimeneti adatséma legfeljebb 5000 karakter hosszú lehet.
- A kimeneti adatcsomag és a Console.log kimenete együttesen legfeljebb 50 KB lehet.
- A kód legfeljebb 50 000 karakter hosszú lehet.
- A teljes végrehajtási idő legfeljebb 5 másodperc lehet.
- A memóriahasználat legfeljebb 10 MB lehet.
Sablonok
Ingyenes (100%-os kedvezménnyel ellátott) tétel hozzáadása az új rendelésekhez
Ez a sablon egy ingyenes, kedvezményes tételt ad az új rendelésekhez, ha a tétel készleten van. Ellenőrzi a készletet, 100%-os kedvezményt alkalmaz, és a vásárló értesítése nélkül frissíti a rendelést. Ez a munkafolyamat a következő esetekben segíthet az automatizálásban:
- Növelheti a vásárlói elégedettséget azáltal, hogy meglepetésként egy ingyenes tételt ad a rendelésükhöz.
- Új vagy kevésbé ismert termékeket népszerűsíthet azáltal, hogy ingyenes mintaként hozzáadja őket a rendelésekhez.
- Egyszerűsítheti a promóciókat az ingyenes tételek hozzáadásának és kedvezményezésének automatizálásával.
Inaktív visszavételek törlése
Automatikusan törli azokat a visszavételeket, amelyek visszatérítése vagy készletre vétele egy bizonyos időn belül nem történt meg. Sablon megtekintése
Előtaggal ellátott címkék átalakítása termék-metamezővé a Kód futtatása művelet segítségével
Ez a munkafolyamat azokat a címkéket, amelyek egy előtaggal (például „color:”) kezdődnek, hozzáadja egy termék-metamezőlistához. A Kód futtatása műveletet használja a címkék és a metamezőlistában meglévő tételek elemzésére. A munkafolyamat egy termék létrehozásakor fut le, de manuálisan is futtatható meglévő termékeken. Sablon megtekintése
Értesítés küldése, ha egy vásárló egy termék több változatát rendeli meg
E-mail-értesítést kap, amikor egy vásárló ugyanannak a terméknek több változatát rendeli meg. Sablon megtekintése
Értesítés küldése, ha a rendelés csomagot tartalmaz
Ez a munkafolyamat egy rendelés létrehozásakor indul el, és ellenőrzi, hogy a rendelésben szereplő termékek bármelyikét csomag részeként vásárolták-e meg. Ha ilyet talál, egy belső e-mailt küld a csomag részleteivel. Ezenkívül ezt a munkafolyamatot kiindulási pontként használhatja bármely olyan felhasználási esethez, amelynek során egy rendelésen belüli csomag jelenlétét kell észlelni. Sablon megtekintése
Rendelések címkézése a hozzájuk tartozó UTM-kampánnyal
Címkéket ad azokhoz a rendelésekhez, amelyek tartalmazzák a hozzájuk tartozó UTM-kampányok nevét. Sablon megtekintése