Vykdyti kodą

Veiksmas Vykdyti kodą vykdo JavaScript. Galite perduoti duomenis iš ankstesnių darbo eigos veiksmų kaip įvestį veiksmui Vykdyti kodą ir grąžinti vertes, kurios bus naudojamos vėlesniuose veiksmuose.

Laukai

Veiksme Vykdyti kodą yra šie laukai.

Laukai, naudojami veiksme „Vykdyti kodą“.
LaukasAprašymas
ĮvestisBūtina. „GraphQL“ užklausa, skirta naudoti duomenis iš ankstesnių veiksmų kaip įvestį veiksmui Vykdyti kodą.
IšvestisBūtina. Veiksmo grąžintinų duomenų atvaizdavimas, apibrėžtas „GraphQL“ schemos apibrėžties kalba (SDL).
KodasBūtina. JavaScript kodas, kurį vykdys veiksmas Vykdyti kodą.

Įvesties duomenys

Įvesties duomenis galima perduoti iš veiksmų, kurie atliekami prieš veiksmą Vykdyti kodą. Norėdami įtraukti šiuos duomenis, galite parašyti „GraphQL“ užklausą lauke Įvestis. Iš užklausos grąžinti duomenys bus pasiekiami kaip input argumentas funkcijoje, pažymėtoje export default, kuri pagal susitarimą vadinama main.

Įvesties užklausa yra „Flow“ aplinkos duomenų, o ne „Shopify Admin“ API užklausa. Todėl į įvesties duomenis negalite įterpti „Shopify“ užklausos. Be to, „Flow“ tvarko edges ir nodes užklausoje, todėl Jums nereikia pridėti šių ar kitos puslapiavimo sintaksės prie savo užklausos.

Pavyzdinė įvestis, kuri gauna užsakymo pastabą ir eilutės elemento pavadinimą:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Šie duomenys konvertuojami į kintamąjį input, kurį galima naudoti kode:

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

Įvestis taip pat galima išskaidyti funkcijos paraše:

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

Metalaukai

Norėdami pasiekti atskiras metalauko vertes veiksme „Vykdyti kodą“, pirmiausia turite pridėti metalauką prie „Flow“ aplinkos duomenų. Tai galima padaryti bet kuriame veiksme ar sąlygoje, išskyrus „Vykdyti kodą“. Pavyzdžiui, galite pridėti veiksmą Registruoti išvestį ir vykdyti instrukcijas, kaip pridėti metalauką.

Pridėjus metalauką prie darbo eigos aplinkos, jį galėsite pasiekti veiksme „Vykdyti kodą“. Pavyzdžiui, tarkime, kad pridėjote užsakymo metalauką su slapyvardžiu giftMessage. Tada galėsite jį pasiekti savo įvesties užklausoje:

{
  order {
    giftMessage {
      value
    }
  }
}

Išvesties duomenys

Veiksmas Vykdyti kodą gali grąžinti pasirinktinius duomenis. Norėdami apibrėžti duomenų, kuriuos grąžins kodas, tipą, naudokite lauką Išvestis ir „GraphQL“ schemos apibrėžimo kalbą (SDL). Palaikomi išvesties tipai yra String, Int, Float, Boolean ir ID, kurie atitinka SDL specifikaciją, nurodančią, kaip nurodyti privalomus laukus, sąrašus ir pasirinktinius duomenis.

Pavyzdžiui, norėdami grąžinti eilutę, pavadintą giftMessage, ir skaičių, pavadintą totalGifts:

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

Komentarai yra neprivalomi, bet bus naudojami duomenims aprašyti „Flow“ vartotojo sąsajoje. Norėdami pateikti šiuos duomenis „JavaScript“ kode, grąžinkite tipą atitinkantį objektą:

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

Taip pat galite apibrėžti pasirinktinį tipą, kad grąžintumėte sudėtingesnius duomenis. Pavyzdžiui, norėdami grąžinti tipą, pavadintą Gift, kuriame yra eilutė, pavadinta message, ir skaičius, pavadintas 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!
}

Norėdami pasiekti šiuos duomenis veiksmuose, kurie seka po šio veiksmo, naudokite kintamąjį pavadinimu Vykdyti kodą, kurio tipas bus nustatytas pagal Išvesties schemą, apibrėžtą veiksmo Vykdyti kodą konfigūracijoje. Šį kintamąjį galite naudoti ir sąlygose, ir veiksmuose.

Console.log

Galite naudoti console.log, kad išvestumėte duomenis į „Flow“ darbo eigos vykdymo žurnalą trikčių šalinimo tikslais. Išvestis bus matoma darbo eigos vykdymo žurnale. Pavyzdžiui, galimi šie variantai:

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,
  };
}

Veiksme „Vykdyti kodą“ negalite naudoti console.info, console.error ar kitų funkcijų.

Pavyzdys

Kodo veiksmo pavyzdžių galite rasti „Flow“ pavyzdžių saugykloje.

Apribojimai

Veiksmas Vykdyti kodą turi šiuos apribojimus:

  • Veiksmas Vykdyti kodą palaiko „ECMA2020 JavaScript“. Jis nepalaiko „NodeJS“ ar „CommonJS“ API arba modulių importavimo.
  • Jūsų kodas negali atlikti HTTP iškvietų (fetch).
  • Negalima naudoti atsitiktinių ir laikrodžiu pagrįstų funkcijų. Datos duomenys, pvz., scheduledAt arba createdAt, gali būti perduoti kaip įvestis.
  • „Console.log“ neįrašo duomenų į naršyklės konsolę.
  • Siekiant sumažinti naudingosios apkrovos dydį, išvesties duomenų naudingoji apkrova grąžina tik tuos kintamuosius, kurie naudojami tolesniuose veiksmuose.
  • Negalite pridėti metalauko pseudonimo tiesiogiai veiksme Vykdyti kodą. Norėdami tai padaryti, peržiūrėkite šio puslapio skiltį Metalaukai.

Be to, taikomi šie apribojimai:

  • Įvesties duomenų užklausos apimtis ribojama iki 5 000 simbolių.
  • Išvesties duomenų schemos apimtis ribojama iki 5 000 simbolių.
  • Išvesties duomenų naudingosios apkrovos ir „Console.log“ išvesties bendra apimtis ribojama iki 50 KB.
  • Kodo ilgis negali viršyti 50 000 simbolių.
  • Bendra vykdymo trukmė ribojama iki 5 sekundžių.
  • Atminties naudojimas ribojamas iki 10 MB.

Šablonai

Nemokamo (su 100 % nuolaida) daikto pridėjimas prie naujų užsakymų

Šis šablonas prie naujų užsakymų prideda nemokamą daiktą su nuolaida, kai jo yra sandėlyje. Jis patikrina inventorių, pritaiko 100 % nuolaidą ir atnaujina užsakymą nepranešęs klientui. Ši darbo eiga gali padėti automatizuoti šiuos scenarijus:

  • Klientų pasitenkinimo didinimas, į jų užsakymą įtraukiant netikėtą nemokamą daiktą.
  • Naujų ar mažiau žinomų produktų reklamavimas, pridedant juos kaip nemokamus pavyzdžius prie užsakymų.
  • Reklaminių akcijų optimizavimas, automatizuojant nemokamų daiktų įtraukimą ir nuolaidų taikymą.

Peržiūrėti šabloną

Neaktyvių grąžinimų atšaukimas

Automatiškai atšaukiamas grąžinimas, už kurį per tam tikrą laiką nebuvo grąžinti pinigai arba papildytos atsargos. Peržiūrėti šabloną

Žymų su priešdėliu konvertavimas į produkto metalauką naudojant veiksmą „Vykdyti kodą“

Ši darbo eiga paims žymas, prasidedančias priešdėliu, pvz., „color:“, ir pridės jas į produkto metalaukų sąrašą. Ji naudoja veiksmą „Vykdyti kodą“, kad išanalizuotų žymas ir esamus daiktus metalaukų sąraše. Darbo eiga paleidžiama, kai sukuriamas produktas, bet ją galima paleisti rankiniu būdu esamiems produktams. Peržiūrėti šabloną

Pranešimo siuntimas, kai klientas užsako kelis produkto variantus

Gaukite pranešimą el. paštu, kai klientas užsako kelis to paties produkto variantus. Peržiūrėti šabloną

Pranešimo siuntimas, kai užsakyme yra rinkinio pasiūlymas

Ši darbo eiga pradedama, kai sukuriamas užsakymas, ir patikrina, ar kuris nors iš užsakyme esančių produktų buvo nupirktas kaip rinkinio pasiūlymo dalis. Jei randama, išsiunčiamas vidinis el. laiškas su rinkinio pasiūlymo informacija. Be to, šią darbo eigą galite naudoti kaip atspirties tašką bet kokiam naudojimo atvejui, kai reikia aptikti rinkinio pasiūlymą užsakyme. Peržiūrėti šabloną

Užsakymų žymėjimas susijusia UTM kampanija

Prie užsakymų prideda žymas, kuriose yra susijusių UTM kampanijų pavadinimai. Peržiūrėti šabloną