Suorita koodi

Suorita koodi -toiminto suorittaa JavaScriptin. Voit siirtää työnkulun edellisten vaiheiden tietoja Suorita koodi ‑toiminnon syötteeksi ja palauttaa seuraavissa vaiheissa käytettäviä arvoja.

Kentät

Suorita koodi ‑toiminto sisältää seuraavat kentät.

Suorita koodi -toiminnossa käytettävät kentät
KenttäKuvaus
SyöttääPakollinen. GraphQL-kysely, joka käyttää edellisten vaiheiden tietoja Suorita koodi -toiminnon syötteenä.
TulosPakollinen. Esitys toiminnon palauttamista tiedoista GraphQL Schema Definition Language (SDL) ‑kielellä.
KoodiPakollinen. JavaScript, jonka Suorita koodi -toiminto suorittaa.

Syötetiedot

Syötetiedot saatetaan ohittaa vaiheista, jotka tapahtuvat ennen Suorita koodi -toimintoa. Jos haluat sisällyttää nämä tiedot, voit kirjoittaa Syöte-kenttään GraphQL-kyselyn. Kyselyn palauttamat tiedot tulevat saataville input-argumenttina funktioon, jossa on export default -merkintä ja jonka nimi on yleisen käytännön mukaan main.

Syötekysely on Flow-ympäristötietojen kysely, ei Shopify Admin API -kysely. Sen vuoksi et voi lisätä Shopify-kyselyä syötetietoihin. Lisäksi Flow käsittelee kyselyn arvot edges ja nodes, joten sinun ei tarvitse lisätä niitä tai muuta sivutussyntaksia kyselyyn.

Esimerkkisyöte, joka noutaa tilausviestin ja rivikohdan nimen:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Nämä tiedot muunnetaan input-muuttujaksi, jota voidaan käyttää koodissa:

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

Syötteet voidaan myös purkaa funktion allekirjoituksessa:

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

Metakentät

Jotta voit käyttää yksittäisen metakentän arvoja Suorita koodi -kentässä, sinun täytyy ensin lisätä metakenttä Flow'n ympäristötietoihin. Tämä tehdään missä tahansa muussa toimenpiteessä tai ehdossa paitsi Suorita koodi -kentässä. Voit esimerkiksi lisätä Lokitulos-toiminnon ja lisätä sen jälkeen metakentän noudattamalla ohjeita.

Kun metakenttä on lisätty työnkulun ympäristöön, voit käyttää sitä Run code -kentässä. Oletetaan esimerkiksi, että lisäsit Tilaus-metakentän, jonka nimi on giftMessage. Voit sen jälkeen käyttää sitä syötekyselyssäsi:

{
  order {
    giftMessage {
      value
    }
  }
}

Tulostiedot

Suorita koodi -toiminto voi palauttaa mukautettuja tietoja. Voit määrittää koodin palauttaman tietotyypin käyttämällä Tuloste-kenttää ja GraphQL:n Schema Definition Language (SDL) -kieltä. Voit palauttaa merkkijonon giftMessage ja numeron totalGifts esimerkiksi näin:

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

Kommentit ovat valinnaisia, mutta niitä käytetään Flow'n käyttöliittymän tietojen kuvailemiseen. Jos haluat nämä tiedot JavaScript-koodin tulosteena, palauta objekti, joka on samaa tyyppiä:

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

Voit myös määrittää mukautetun tyypin, jotta voit palauttaa monimutkaisempia tietoja. Jos haluat palauttaa esimerkiksi tyypin, jonka nimi on Gift, ja joka sisältää merkkijonon message sekä luvun amount, toimi näin:

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!
}

Jos haluat käyttää näitä tietoja tätä toimintoa seuraavien vaiheiden aikana, käytä Suorita koodi ‑muuttujaa, joka kirjoitetaan Suorita koodi ‑toiminnon määrityksissä valitun Output-skeeman mukaisesti. Voit käyttää tätä muuttujaa sekä ehdoissa että toiminnoissa.

Console.log

Voit käyttää console.log-logia datan tuottamiseen Flow'n työnkulun suorituslokin vianmääritystarkoituksiin. Tulos näkyy työnkulun Suorituslokissa. Esimerkiksi seuraavat ovat kelvollisia:

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

Et voi käyttää console.info, console.error- tai muita Suorita koodi -toiminnon funktiota .

Esimerkki

Voit katsoa lisää esimerkkejä Suorita koodi -toiminnosta Flow-esimerkkien tietovarastosta.

Rajoitukset

Suorita koodi -toimintoon liittyy seuraavia rajoituksia:

  • Suorita koodi -toiminto tukee ECMA2020 JavaScriptiä. Koodi ei tue NodeJS:ää. CommanJS API -rajapintoja eikä moduulien tuontia.
  • Koodisi ei voi suorittaa http-kutsuja (fetch).
  • Satunnaisia ja kelloon perustuvia toimintoja ei voi käyttää. Syötteeksi voidaan antaa päivämäärätietoja, kuten scheduledAt tai createdAt.
  • Console.log ei kirjaudu selainkonsoliin.
  • Et voi lisätä metakentän aliasta suoraan Suorita koodi -toimintoon. Katso metakenttäosiosta, miten tämä onnistuu.

Lisäksi seuraavat rajoitukset on otettu käyttöön:

  • Syötetietojen kyselyn enimmäismerkkimäärä on 5 000.
  • Tulostietojen kaavio on rajoitettu 5 000 merkkiin.
  • Tulostietojen hyötykuorma ja Console.log on rajattu yhteensä 50 kilotavuun.
  • Koodin enimmäismerkkimäärä on 50 000.
  • Suorituksen kokonaiskesto on rajoitettu 5 sekuntiin.
  • Muistin käyttö on rajoitettu 10 megatavuun.

Toteutussuunnitelma

Flow-tiimi aikoo tulevaisuudessa lisätä ominaisuuksia Suorita koodi -toimintoon. Näet tulevat parannukset ja niiden arvioidut käyttöönottopäivät seuraavassa taulukossa.

Suorita koodi -toiminnon toteutussuunnitelma
ParannusKuvausArvioitu toimitus
Lokiin kirjaaminenKäytä "console.log"-koodia saadaksesi tulostetiedot Suorita koodi ‑toiminnon lokiin vianmääritystarkoituksia varten.Tehty.
Ulkoiset API-kutsutKäytä JavaScriptin nouto-ominaisuutta APIen kutsumiseen.1. vuosineljännes 2025

Palaute

Suorita koodi -toiminto on uudenlainen Shopify Flow -vaihe. Jos sinulla on palautetta ja kysyttävää, kommentoi tätä Flow-yhteisön julkaisua.

Etkö löydä hakemaasi vastausta? Autamme mielellämme.