Code ausführen
Die Aktion Code ausführen führt JavaScript aus. Du kannst Daten aus früheren Schritten im Workflow als Eingabe an die Aktion Code ausführen weitergeben und Werte zurückgeben, die in nachfolgenden Schritten verwendet werden sollen.
Auf dieser Seite
Felder
Die Aktion Code ausführen enthält die folgenden Felder.
Feld | Beschreibung |
---|---|
Eingabe | Erforderlich. Eine GraphQL-Abfrage zur Verwendung von Daten aus vorherigen Schritten als Eingabe für die Aktion Code ausführen. |
Ausgabe | Erforderlich. Eine Darstellung der Daten, die von der Aktion zurückgegeben werden sollen, definiert in der Schema Definition Language (SDL) von GraphQL. |
Code | Erforderlich. Das JavaScript, das die Aktion Code ausführen ausführen wird. |
Eingabedaten
Eingabedaten können aus Schritten übergeben werden, die vor der Aktion Code ausführen stattfinden. Um diese Daten einzubeziehen, kannst du eine GraphQL-Abfrage in das Feld Eingabe schreiben. Die von der Abfrage zurückgegebenen Daten sind als input
für die mit export default
gekennzeichnete Funktion verfügbar, die gemäß Konvention main
heißt.
Die Eingabeabfrage ist eine Abfrage für Flow-Umgebungsdaten und keine Abfrage für die API des Shopify-Adminbereichs. Deshalb kannst du keine Shopify-Abfrage in die Eingabedaten einfügen. Darüber hinaus verarbeitet Flow die Tags edges
und nodes
in der Abfrage, sodass du diese oder weitere Paging-Syntax nicht zu deiner Abfrage hinzufügen musst.
Eine Beispieleingabe, die eine Bestellnotiz und den Titel einer Position erhält:
Diese Daten werden in einen input
-Wert umgewandelt, die im Code verwendet werden kann:
Eingaben können auch in der Unterschrift der Funktion destrukturiert werden:
Metafelder
Um auf einzelne Metafeldwerte in "Code ausführen" zuzugreifen, musst du das Metafeld zuerst zu den Umgebungsdaten von Flow hinzufügen. Dies kann in jeder Aktion oder Bedingung mit Ausnahme von "Code ausführen" getan werden. Du kannst beispielsweise die Aktion Protokollausgabe hinzufügen und dann den Anweisungen zum Hinzufügen des Metafelds folgen.
Nachdem ein Metafeld zur Workflow-Umgebung hinzugefügt wurde, kannst du auf das Metafeld in "Code ausführen" zugreifen. Nehmen wir zum Beispiel an, dass du ein Bestell-Metafeld mit dem Aliasnamen giftMessage
hinzufügst. Du kannst dann in deiner Eingabeabfrage darauf zugreifen:
Ausgabedaten
Die Aktion Code ausführen kann benutzerdefinierte Daten zurückgeben. Um die Art der Daten zu definieren, die der Code zurückgeben wird, verwende das Feld Ausgabe und GraphQL Schema Definition Language (SDL). Unterstützte Ausgabetypen sind String
, Int
, Float
, Boolean
und ID
, die der SDL-Spezifikation für die Angabe erforderlicher Felder, Listen und benutzerdefinierter Daten folgen.
Um z. B. einen String namens "giftMessage
" und eine Zahl namens "totalGifts
" zurückzugeben:
Die Kommentare sind optional, werden aber zur Beschreibung der Daten in der Flow-Benutzeroberfläche verwendet. Um diese Daten im JavaScript-Code ausgeben zu können, gib ein Objekt zurück, das mit dem Typ übereinstimmt:
Du kannst auch einen benutzerdefinierten Typ definieren, um komplexere Daten zurückzugeben. Um z. B. einen Typ namens "Gift
", der einen String namens "message
" und eine Zahl namens "amount
" zurückzugeben:
Um in den Schritten, die auf diese Aktion folgen, auf diese Daten zuzugreifen, verwende die Variable Code ausführen, die entsprechend dem Output
-Schema, das Sie in der Konfiguration der Aktion Code ausführen definieren, eingegeben wird. Du kannst diese Variable sowohl in Bedingungen als auch in Aktionen verwenden.
Console.log
Du kannst console.log
verwenden, um Daten zu Fehlerbehebungszwecken an das Workflow-Ausführungsprotokoll auszugeben. Die Ausgabe wird im Ausführungsprotokoll für den Workflow angezeigt. Die folgenden Optionen sind beispielsweise gültig:
Du kannst console.info
, console.error
oder andere Funktionen nicht in der Aktion Code ausführen verwenden.
Beispiel
Beispiele für die Aktion "Code ausführen" können im Flow-Beispiel-Repository gefunden werden.
Einschränkungen
Die Aktion Code ausführen hat folgende Einschränkungen:
- Die Aktion "Code ausführen" unterstützt ECMA2020 JavaScript. Sie unterstützt weder die NodeJS oder CommonJS APIs noch den Import von Modulen.
- Dein Code kann keine HTTP-Aufrufe tätigen (
fetch
). - Zufällige und taktbasierende Funktionen können nicht benutzt werden. Datumsdaten wie
scheduledAt
odercreatedAt
können als Eingabe eingefügt werden. - Console.log wird nicht in der Browser-Konsole protokolliert.
- Du kannst das Metafeld-Alias nicht direkt zur Aktion "Code ausführen" hinzufügen. Im Metafelder-Abschnitt findest du heraus, wie du das erreichen kannst.
Darüber hinaus gelten folgende Einschränkungen zwingend:
- Die Eingabedaten-Abfrage ist auf 5000 Zeichen begrenzt.
- Das Ausgabedaten-Schema ist auf 5000 Zeichen begrenzt.
- Die Ausgabedaten-Nutzlast und die Console.log-Ausgabe sind zusammen auf 50 KB beschränkt.
- Code darf nicht länger als 50 000 Zeichen sein.
- Die Gesamtausführungsdauer ist auf 5 Sekunden begrenzt.
- Die Speichernutzung ist auf 10 MB begrenzt.
Roadmap
Das Flow-Team plant, die Aktion Code ausführen im Laufe der Zeit um weitere Funktionen zu erweitern. Die folgende Tabelle beschreibt die geplanten Verbesserungen und deren geschätzte Lieferdaten.
Verbesserung | Beschreibung | Voraussichtliche Zustellung |
---|---|---|
Protokollierung | "console.log" verwenden, um Daten aus dem Protokoll zur Fehlerbehebung ausgeben zu können. | Fertig. |
Externe API-Aufrufe | Verwende den Fetch von JavaScript, um APIs aufrufen zu können. | Q1 2025 |
Vorlagen
Kostenlosen Artikel (100 % Rabatt) zu neuen Bestellungen hinzufügen
Diese Vorlage fügt einen kostenlosen, reduzierten Artikel zu neuen Bestellungen hinzu, wenn der Artikel auf Lager ist. Das Inventar wird überprüft, ein Rabatt von 100 % wird angewendet und die Bestellung wird aktualisiert, ohne den Kunden zu informieren. Diese Automatisierung wäre nützlich, um (1) die Kundenzufriedenheit zu erhöhen, indem als Überraschung ein kostenloser Artikel in der Bestellung enthalten ist, (2) neue oder weniger bekannte Produkte zu bewerben, indem sie sie als kostenlose Proben in Bestellungen hinzugefügt werden, oder (3) um Werbeaktionen zu optimieren, indem die Aufnahme und der Rabatt von kostenlosen Artikeln automatisiert wird. Vorlage anzeigen
Inaktive Rückgaben stornieren
Storniere automatisch eine Rückgabe, die nicht innerhalb einer bestimmten Zeitspanne erstattet oder zum Lagerbestand zurückgeführt wurde. Vorlage anzeigen
Tags mit einem Präfix mit der Aktion "Code ausführen" in ein Produkt-Metafeld umwandeln
Dieser Workflow nimmt Tags, die mit einem Präfix wie "color:" beginnen, und fügt sie zu einer Liste mit Produkt-Metafeldern hinzu. Er verwendet die Aktion "Code ausführen", um die Tags und vorhandenen Elemente in der Metafeldliste zu analysieren. Der Workflow wird ausgeführt, wenn ein Produkt erstellt wird, kann aber auch manuell für bestehende Produkte ausgeführt werden. Vorlage anzeigen
Benachrichtigung senden, wenn ein Kunde mehrere Varianten eines Produkts bestellt
Erhalte eine E-Mail-Benachrichtigung, wenn ein Kunde mehrere Varianten des gleichen Produkts bestellt. Vorlage anzeigen
Benachrichtigung senden, wenn die Bestellung ein Bundle enthält
Dieser Workflow wird ausgeführt, wenn eine Bestellung erstellt wird. Der Workflow überprüft, ob eines der Produkte in der Bestellung als Teil eines Bundles gekauft wurde. Wenn dem so ist, wird eine interne E-Mail mit den Bundle-Details gesendet wird. Darüber hinaus kannst du diesen Workflow als Ausgangspunkt für jeden Anwendungsfall verwenden, bei dem das Vorhandensein eines Bundles innerhalb einer Bestellung erkannt werden muss. Vorlage anzeigen
Bestellungen mit verknüpfter UTM-Kampagne taggen
Füge Tags zu Bestellungen hinzu, die die Namen verknüpfter UTM-Kampagnen enthalten. Vorlage anzeigen