Uruchom kod

Akcja Uruchom kod wykonuje kod JavaScript. Możesz przekazywać dane z poprzednich kroków przepływu pracy jako dane wejściowe do akcji Uruchom kod i zwracać wartości do wykorzystania w kolejnych krokach.

Pola

Akcja Uruchom kod zawiera następujące pola.

Pola używane w akcji „Uruchom kod”.
PoleOpis
Dane wejścioweWymagane. Zapytanie GraphQL używane do przekazywania danych z poprzednich kroków jako dane wejściowe do akcji Uruchom kod.
Dane wyjścioweWymagane. Reprezentacja danych, które mają być zwrócone przez akcję, zdefiniowana w języku definicji schematu (SDL) GraphQL.
KodWymagany. Kod JavaScript, który zostanie wykonany przez akcję Uruchom kod.

Dane wejściowe

Dane wejściowe można przekazywać z kroków, które występują przed akcją Uruchom kod. Aby uwzględnić te dane, możesz napisać zapytanie GraphQL w polu Dane wejściowe. Dane zwrócone z zapytania będą dostępne jako argument input funkcji oznaczonej jako export default, która umownie nazywa się main.

Zapytanie wejściowe jest zapytaniem o dane środowiska Flow, a nie zapytaniem do Shopify Admin API. W związku z tym nie można wstawiać zapytania Shopify do danych wejściowych. Ponadto aplikacja Flow obsługuje edges i nodes w zapytaniu, więc nie musisz dodawać ich ani innej składni stronicowania do zapytania.

Przykładowe dane wejściowe, które pobierają notatkę do zamówienia i tytuł pozycji:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Te dane są konwertowane na zmienną input, której można użyć w kodzie:

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

Dane wejściowe można również poddać destrukturyzacji w sygnaturze funkcji:

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

Metapola

Aby uzyskać dostęp do pojedynczych wartości metapól w akcji „Uruchom kod”, musisz najpierw dodać metapole do danych środowiska Flow. Można to zrobić w dowolnej akcji lub warunku innym niż „Uruchom kod”. Na przykład możesz dodać akcję Zarejestruj dane wyjściowe, a następnie postępować zgodnie z instrukcjami, aby dodać metapole.

Po dodaniu metapola do środowiska przepływu pracy możesz uzyskać do niego dostęp w akcji „Uruchom kod”. Załóżmy na przykład, że dodano metapole zamówienia z aliasem giftMessage. Możesz uzyskać do niego dostęp w zapytaniu wejściowym:

{
  order {
    giftMessage {
      value
    }
  }
}

Dane wyjściowe

Akcja Uruchom kod może zwracać dane niestandardowe. Aby zdefiniować typ danych, które kod ma zwrócić, użyj pola Dane wyjściowe i języka definicji schematu (SDL) GraphQL. Obsługiwane typy danych wyjściowych to String, Int, Float, Boolean i ID, które są zgodne ze specyfikacją SDL w zakresie sposobu określania wymaganych pól, list i danych niestandardowych.

Na przykład, aby zwrócić ciąg znaków o nazwie giftMessage i liczbę o nazwie totalGifts:

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

Komentarze są opcjonalne, ale zostaną użyte do opisania danych w interfejsie aplikacji Flow. Aby wyprowadzić te dane w kodzie JavaScript, zwróć obiekt pasujący do typu:

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

Możesz również zdefiniować typ niestandardowy, aby zwracać bardziej złożone dane. Na przykład, aby zwrócić typ o nazwie Gift, który zawiera ciąg znaków o nazwie message i liczbę o nazwie 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!
}

Aby uzyskać dostęp do tych danych w krokach następujących po tej akcji, użyj zmiennej o nazwie Uruchom kod, której typ będzie zgodny ze schematem Dane wyjściowe zdefiniowanym w konfiguracji akcji Uruchom kod. Możesz używać tej zmiennej zarówno w warunkach, jak i akcjach.

Console.log

Możesz użyć funkcji console.log do wyprowadzania danych do dziennika przebiegu workflow aplikacji Flow w celu rozwiązywania problemów. Dane wyjściowe będą widoczne w dzienniku przebiegu dla danego workflow. Na przykład poniższe zapisy są prawidłowe:

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

W akcji Uruchom kod nie można używać funkcji console.info, console.error ani innych.

Przykład

Przykłady dla akcji kodu można znaleźć w repozytorium przykładów Flow.

Ograniczenia

Akcja Uruchom kod ma następujące ograniczenia:

  • Akcja Uruchom kod obsługuje język JavaScript w standardzie ECMA2020. Nie obsługuje interfejsów API NodeJS ani CommonJS ani importowania modułów.
  • Kod nie może wykonywać wywołań HTTP (fetch).
  • Nie można używać funkcji losowych i opartych na zegarze. Dane dotyczące daty, takie jak scheduledAt lub createdAt, można przekazać jako dane wejściowe.
  • Funkcja Console.log nie zapisuje danych w konsoli przeglądarki.
  • Aby zmniejszyć rozmiar ładunku, ładunek danych wyjściowych zwraca tylko zmienne używane w kolejnych krokach.
  • Nie można dodać aliasu metapola bezpośrednio w akcji Uruchom kod. W tym celu zapoznaj się z sekcją Metapola na tej stronie.

Ponadto obowiązują następujące limity:

  • Zapytanie o dane wejściowe jest ograniczone do 5000 znaków.
  • Schemat danych wyjściowych jest ograniczony do 5000 znaków.
  • Ładunek danych wyjściowych i dane wyjściowe Console.log są ograniczone łącznie do 50 KB.
  • Kod nie może być dłuższy niż 50 000 znaków.
  • Całkowity czas wykonania jest ograniczony do 5 sekund.
  • Zużycie pamięci jest ograniczone do 10 MB.

Szablony

Dodaj darmową pozycję (z rabatem 100%) do nowych zamówień

Ten szablon dodaje darmową pozycję z rabatem do nowych zamówień, gdy pozycja jest na stanie. Sprawdza zapasy, stosuje 100% rabat i aktualizuje zamówienie bez powiadamiania klienta. Ten workflow może pomóc w automatyzacji następujących scenariuszy:

  • Zwiększenie satysfakcji klienta poprzez dołączenie do jego zamówienia darmowej pozycji-niespodzianki.
  • Promowanie nowych lub mniej znanych produktów poprzez dodawanie ich jako darmowych próbek do zamówień.
  • Usprawnienie promocji poprzez automatyzację dodawania i rabatowania darmowych pozycji.

Wyświetl szablon

Anuluj nieaktywne zwroty

Automatycznie anuluj zwrot, dla którego nie dokonano zwrotu pieniędzy ani nie uzupełniono zapasów w określonym czasie. Wyświetl szablon

Konwertuj tagi z prefiksem na metapole produktu za pomocą akcji Uruchom kod

Ten workflow pobiera tagi, które zaczynają się od prefiksu, takiego jak „color:”, i dodaje je do listy metapól produktu. Wykorzystuje on akcję Uruchom kod do przeanalizowania tagów i istniejących pozycji na liście metapól. Workflow jest uruchamiany po utworzeniu produktu, ale można go również uruchomić ręcznie dla istniejących produktów. Wyświetl szablon

Wyślij powiadomienie, gdy klient zamówi wiele wariantów produktu

Otrzymaj powiadomienie e-mail, gdy klient zamówi wiele wariantów tego samego produktu. Wyświetl szablon

Wyślij powiadomienie, gdy zamówienie zawiera pakiet

Ten workflow rozpoczyna się po utworzeniu zamówienia i sprawdza, czy którykolwiek z produktów w zamówieniu został zakupiony jako część pakietu. W przypadku znalezienia pakietu wysyłany jest wewnętrzny e-mail ze szczegółami pakietu. Dodatkowo możesz użyć tego workflow jako punktu wyjścia dla każdego przypadku użycia, który wymaga wykrycia obecności pakietu w zamówieniu. Wyświetl szablon

Oznacz tagami zamówienia z powiązaną kampanią UTM

Dodaje tagi do zamówień zawierające nazwy wszelkich powiązanych kampanii UTM. Wyświetl szablon