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.
| Pole | Opis |
|---|---|
| Dane wejściowe | Wymagane. Zapytanie GraphQL używane do przekazywania danych z poprzednich kroków jako dane wejściowe do akcji Uruchom kod. |
| Dane wyjściowe | Wymagane. Reprezentacja danych, które mają być zwrócone przez akcję, zdefiniowana w języku definicji schematu (SDL) GraphQL. |
| Kod | Wymagany. 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
scheduledAtlubcreatedAt, 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.
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