Uruchom kod
Czynność Uruchom kod polega na wykonaniu kodu JavaScript. Możesz przekazywać dane z poprzednich kroków w workflow jako dane wejściowe do czynności Uruchom kod i zwracać wartości, które mają być używane w kolejnych krokach.
Pola
Czynność Uruchom kod zawiera poniższe pola.
Pole | Opis |
---|---|
Dane wejściowe | Wymagane. Zapytanie GraphQL umożliwiające wykorzystanie danych z poprzednich kroków jako danych wejściowych dla czynności Uruchom kod. |
Dane wyjściowe | Wymagane. Reprezentacja danych, które mają zostać zwrócone w ramach czynności, zdefiniowana w języku Schema Definition Language (SDL) GraphQL. |
Kod | Wymagane. Kod JavaScript wykonywany w ramach czynności Uruchom kod. |
Dane wejściowe
Dane wejściowe mogą być przekazywane z kroków realizowanych przed czynnością 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
dla funkcji oznaczonej export default
nazywanej umownie main
.
Zapytanie wejściowe jest zapytaniem o dane środowiska Flow, a nie zapytaniem do API Shopify Admin. Z tego względu nie można wstawić zapytania Shopify w danych wejściowych. Ponadto Flow obsługuje błędy edges
i nodes
w zapytaniu, więc nie trzeba dodawać tych lub innych składni stronicowania do zapytania.
Przykładowe dane wejściowe, które pobierają notatkę o zamówieniu i tytuł pozycji:
{
order {
note
lineItems {
title
}
}
}
Dane te są przekształcane na zmienną input
, która może być używana w kodzie:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}
Dane wejściowe mogą być również zdestrukturyzowane w sygnaturze funkcji:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}
Metapola
Aby uzyskać dostęp do pojedynczych wartości metapola w czynności Uruchom kod, musisz najpierw dodać metapole do danych środowiska Flow. Można to zrobić w dowolnym warunku lub czynności innej niż Uruchom kod. Na przykład możesz dodać czynność Dane wyjściowe dziennika, a następnie postępować zgodnie z instrukcjami, aby dodać metapole.
Po dodaniu metapola do środowiska workflow możesz uzyskać do niego dostęp w czynności Uruchom kod. Załóżmy na przykład, że dodano metapole Zamówienie z nazwą aliasu giftMessage
. Dostęp do niego możesz następnie uzyskać w zapytaniu wejściowym:
{
order {
giftMessage {
value
}
}
}
Dane wyjściowe
Czynność Uruchom kod polega na zwróceniu niestandardowych danych. Aby zdefiniować typ danych, które zwróci kod, użyj pola Dane wyjściowe i Schema definition language (SDL) GraphQL. Obsługiwane typy danych wyjściowych to String
, Int
, Float
, Boolean
oraz ID
, które są zgodne ze specyfikacją SDL dotyczącą 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 będą używane do opisu danych w interfejsie użytkownika 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 także zdefiniować typ niestandardowy, aby zwrócić bardziej złożone dane. Na przykład, aby zwrócić typ o nazwie Gift
zawierający 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 wykonywanych po tej czynności, użyj zmiennej o nazwie Uruchom kod, która zostanie wpisana zgodnie z schematem Output
zdefiniowanym w konfiguracji czynności Uruchom kod. Możesz użyć tej zmiennej zarówno dla warunków, jak i dla czynności.
Console.log
Możesz użyć console.log
w celu wyprowadzenia danych do dziennika uruchamiania workflow Flow na potrzeby rozwiązywania problemów. Dane wyjściowe będą widoczne w dzienniku przebiegu dla workflow. Na przykład, następujące 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,
};
}
Nie można używać console.info
, console.error
ani innych funkcji w ramach czynności Uruchom kod.
Przykład:
Przykłady czynności Uruchom kod można znaleźć w repozytorium przykładów Flow.
Ograniczenia
Czynność Uruchom kod ma następujące ograniczenia:
- Czynność Uruchom kod obsługuje ECMA2020 JavaScript. Nie obsługuje interfejsów API NodeJS, CommonJS ani importowania modułów.
- Kod nie może wykonać wywołań http (
fetch
). - Funkcje losowe i oparte na zegarze nie mogą być używane. Dane dotyczące daty, takie jak
scheduledAt
lubcreatedAt
mogą być przekazywane jako dane wejściowe. - Console.log nie zapisuje w konsoli przeglądarki.
- Nie możesz dodać aliasu metapola bezpośrednio w czynności Uruchom kod. Wyświetl sekcję metapola, aby dowiedzieć się, jak to zrobić.
Ponadto wymuszane są 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.
- Łączny rozmiar obciążenia danych wyjściowych i danych wyjściowych Console.log nie może przekroczyć 50 kB.
- Kod nie może być dłuższy niż 50 000 znaków.
- Całkowity czas wykonania jest ograniczony do 5 sekund.
- Wykorzystanie pamięci jest ograniczone do 10 MB.
Szablony
Dodaj darmową pozycję (z rabatem w wysokości 100%) do nowych zamówień
Ten szablon dodaje darmową, zrabatowaną pozycję do nowych zamówień, jeśli pozycja jest w magazynie. Sprawdza zapasy, stosuje rabat 100% i aktualizuje zamówienie bez powiadamiania klienta. Ta automatyzacja, sprawdzi się jako narzędzie do: (1) poprawy satysfakcji klientów poprzez dołączanie niespodziewanego podarunku w postaci darmowego produktu do zamówienia, (2) promowania nowych lub mniej znanych produktów poprzez dodawanie ich jako darmowych próbek do zamówień lub (3) usprawnienia promocji poprzez automatyzację dołączania i obejmowania rabatami pozycji. Wyświetl szablon
Anuluj nieaktywne zwroty
Automatycznie anuluj zwrot, który nie został zrefundowany lub zwrócony do zapasów w określonym przedziale czasu. Wyświetl szablon
Konwertuj tagi z prefiksem na metapole produktu za pomocą akcji uruchamiania kodu
Ten workflow wybiera tagi, które zaczynają się od prefiksu, takiego jak np. „kolor”, i dodaje je do listy metapola produktu. Używa czynności Uruchom kod do analizowania tagów i istniejących pozycji na liście metapola. Workflow uruchamia się, gdy produkt zostaje utworzony, ale można go uruchomić ręcznie dla istniejących produktów. Wyświetl szablon
Wyślij powiadomienie, gdy klient zamawia wiele wariantów produktu
Otrzymuj powiadomienie e-mailem, gdy klient zamawia 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 z zamówienia został zakupiony w ramach pakietu. Jeśli tak, zostanie wysłany wewnętrzny e-mail ze szczegółami pakietu. Ponadto możesz użyć tego procesu workflow jako punktu wyjścia do każdego przypadku użycia, który musi wykryć obecność pakietu w zamówieniu. Wyświetl szablon
Oznacz zamówienia z powiązaną kampanią UTM
Dodaje oznaczenia do zamówień, które zawierają nazwy wszelkich powiązanych kampanii UTM. Wyświetl szablon