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.

Felder

Die Aktion Code ausführen enthält die folgenden Felder.

Felder, die in der Aktion "Code ausführen" verwendet werden.
FeldBeschreibung
EingabeErforderlich. Eine GraphQL-Abfrage zur Verwendung von Daten aus vorherigen Schritten als Eingabe für die Aktion Code ausführen.
AusgabeErforderlich. Eine Darstellung der Daten, die von der Aktion zurückgegeben werden sollen, definiert in der Schema Definition Language (SDL) von GraphQL.
CodeErforderlich. 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:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Diese Daten werden in einen input-Wert umgewandelt, 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 Unterschrift der Funktion destrukturiert werden:

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

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:

{
  order {
    giftMessage {
      value
    }
  }
}

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:

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

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:

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

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:

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 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:

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 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 oder createdAt 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.

Roadmap für Verbesserungen der Aktion "Code ausführen"
VerbesserungBeschreibungVoraussichtliche Zustellung
Protokollierung"console.log" verwenden, um Daten aus dem Protokoll zur Fehlerbehebung ausgeben zu können.Fertig.
Externe API-AufrufeVerwende 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

Du hast die gesuchten Antworten nicht gefunden? Wir helfen dir gerne weiter.