Code ausführen
Die Aktion Code ausführen führt JavaScript aus. Du kannst Daten aus vorherigen Schritten im Workflow als Eingabe an die Aktion Code ausführen übergeben und Werte zurückgeben, die in nachfolgenden Schritten verwendet werden.
Auf dieser Seite
Felder
Die Aktion Code ausführen enthält die folgenden Felder.
| Feld | Beschreibung |
|---|---|
| Eingabe | Erforderlich. Eine GraphQL-Abfrage, um Daten aus vorherigen Schritten als Eingabe für die Aktion Code ausführen zu verwenden. |
| 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. Der JavaScript-Code, den die Aktion Code ausführen ausführt. |
Eingabedaten
Eingabedaten können von 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-Argument für die mit export default gekennzeichnete Funktion verfügbar, die üblicherweise main genannt wird.
Die Eingabeabfrage ist eine Abfrage für Flow-Umgebungsdaten und keine Abfrage an die Shopify Admin API. Daher kannst du keine Shopify-Abfrage in die Eingabedaten einfügen. Außerdem verarbeitet Flow die edges und nodes in der Abfrage, sodass du diese oder eine andere Paging-Syntax nicht zu deiner Abfrage hinzufügen musst.
Ein Beispiel für eine Eingabe, die eine Bestellnotiz und den Titel eines Postens abruft:
{
order {
note
lineItems {
title
}
}
}Diese Daten werden in eine input-Variable konvertiert, die im Code verwendet werden kann:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Eingaben können auch in der Funktionssignatur destrukturiert werden:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metafelder
Um in „Code ausführen“ auf einzelne Metafeldwerte zuzugreifen, musst du das Metafeld zuerst zu den Umgebungsdaten von Flow hinzufügen. Dies kann in jeder anderen Aktion oder Bedingung als „Code ausführen“ erfolgen. Du kannst zum Beispiel eine 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 in „Code ausführen“ darauf zugreifen. Angenommen, du hast ein Bestellmetafeld mit dem Alias-Namen giftMessage hinzugefügt. Du kannst dann in deiner Eingabeabfrage darauf zugreifen:
{
order {
giftMessage {
value
}
}
}Ausgabedaten
Die Aktion Code ausführen kann benutzerdefinierte Daten zurückgeben. Um den Datentyp zu definieren, den der Code zurückgeben wird, verwende das Feld Output und die Schema Definition Language (SDL) von GraphQL. Unterstützte Ausgabetypen sind String, Int, Float, Boolean und ID, die der SDL-Spezifikation für die Angabe von Pflichtfeldern, Listen und benutzerdefinierten Daten folgen.
Um beispielsweise einen String mit dem Namen giftMessage und eine Zahl mit dem Namen totalGifts zurückzugeben:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}Die Kommentare sind optional, werden aber verwendet, um die Daten in der Flow-Benutzeroberfläche zu beschreiben. Um diese Daten im JavaScript-Code auszugeben, gib ein Objekt zurück, das dem Typ entspricht:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Du kannst auch einen benutzerdefinierten Typ definieren, um komplexere Daten zurückzugeben. Zum Beispiel, um einen Typ namens Gift zurückzugeben, der einen String namens message und eine Zahl namens amount enthält:
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!
}Um in den Schritten, die auf diese Aktion folgen, auf diese Daten zuzugreifen, verwende die Variable namens Code ausführen, die gemäß dem Output-Schema typisiert wird, das du in der Konfiguration der Aktion Code ausführen definierst. Du kannst diese Variable sowohl in Bedingungen als auch in Aktionen verwenden.
Console.log
Du kannst console.log verwenden, um Daten zur Fehlerbehebung im Workflow-Durchlaufprotokoll von Flow auszugeben. Die Ausgabe ist im Durchlaufprotokoll für den Workflow sichtbar. Die folgenden Beispiele sind gültig:
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,
};
}Du kannst console.info, console.error oder andere Funktionen in der Aktion Code ausführen nicht verwenden.
Beispiel
Beispiele für die Code-Aktion findest du im Flow-Beispiel-Repository.
Beschränkungen
Die Aktion Code ausführen hat die folgenden Beschränkungen:
- Die Aktion Code ausführen unterstützt ECMA2020 JavaScript. Sie unterstützt weder die NodeJS- noch die CommonJS-APIs und auch nicht das Importieren von Modulen.
- Dein Code kann keine HTTP-Aufrufe (
fetch) durchführen. - Zufalls- und uhrzeitbasierte Funktionen können nicht verwendet werden. Datumsangaben wie
scheduledAtodercreatedAtkönnen als Eingabe übergeben werden. - Console.log protokolliert nicht in der Browser-Konsole.
- Um die Payload-Größe zu reduzieren, gibt der Ausgabedaten-Payload nur Variablen zurück, die in nachgelagerten Schritten verwendet werden.
- Du kannst einen Metafeld-Alias nicht direkt in der Aktion Code ausführen hinzufügen. Um dies zu erreichen, lies den Abschnitt Metafelder auf dieser Seite.
Darüber hinaus gelten die folgenden Beschränkungen:
- Die Eingabedatenabfrage ist auf 5.000 Zeichen begrenzt.
- Das Ausgabedatenschema ist auf 5.000 Zeichen begrenzt.
- Der Ausgabedaten-Payload und die Console.log-Ausgabe sind zusammen auf 50 KB begrenzt.
- Der Code darf nicht länger als 50.000 Zeichen sein.
- Die gesamte Ausführungsdauer ist auf 5 Sekunden begrenzt.
- Die Speichernutzung ist auf 10 MB begrenzt.
Vorlagen
Kostenlosen Artikel (100 % Rabatt) zu neuen Bestellungen hinzufügen
Diese Vorlage fügt neuen Bestellungen einen kostenlosen, rabattierten Artikel hinzu, wenn der Artikel auf Lager ist. Sie prüft den Lagerbestand, wendet einen Rabatt von 100 % an und aktualisiert die Bestellung, ohne die Kundschaft darüber zu benachrichtigen. Dieser Workflow kann dabei helfen, die folgenden Szenarien zu automatisieren:
- Die Kundenzufriedenheit steigern, indem ein kostenloser Überraschungsartikel der Bestellung hinzugefügt wird.
- Neue oder weniger bekannte Produkte bewerben, indem sie als kostenlose Proben zu Bestellungen hinzugefügt werden.
- Werbeaktionen optimieren, indem das Hinzufügen und Rabattieren von kostenlosen Artikeln automatisiert wird.
Inaktive Rückgaben stornieren
Storniert automatisch eine Rückgabe, die nicht innerhalb eines bestimmten Zeitraums erstattet oder wieder in den Lagerbestand aufgenommen wurde. Vorlage ansehen
Tags mit einem Präfix mithilfe der Aktion „Code ausführen“ in ein Produkt-Metafeld umwandeln
Dieser Workflow übernimmt Tags, die mit einem Präfix wie 'color:' beginnen, und fügt sie einer Produkt-Metafeldliste hinzu. Er verwendet die Aktion „Code ausführen“, um die Tags und vorhandenen Artikel in der Metafeldliste zu parsen. Der Workflow wird ausgeführt, wenn ein Produkt erstellt wird, kann aber manuell für vorhandene Produkte ausgeführt werden. Vorlage ansehen
Benachrichtigung senden, wenn ein:e Kund:in mehrere Varianten eines Produkts bestellt
Eine E-Mail-Benachrichtigung erhalten, wenn ein:e Kund:in mehrere Varianten desselben Produkts bestellt. Vorlage ansehen
Benachrichtigung senden, wenn eine Bestellung ein Bundle enthält
Dieser Workflow beginnt, wenn eine Bestellung erstellt wird, und prüft, ob eines der Produkte in der Bestellung als Teil eines Bundles gekauft wurde. Wenn ja, wird eine interne E-Mail mit den Bundle-Details gesendet. Zusätzlich kannst du diesen Workflow als Ausgangspunkt für jeden Anwendungsfall verwenden, bei dem das Vorhandensein eines Bundles in einer Bestellung erkannt werden muss. Vorlage ansehen
Bestellungen mit zugehöriger UTM-Kampagne taggen
Fügt Bestellungen Tags hinzu, die die Namen aller zugehörigen UTM-Kampagnen enthalten. Vorlage ansehen