Hinzufügen und Ausführen von Codeausschnitten mit Inlinecode in Azure Logic AppsAdd and run code snippets by using inline code in Azure Logic Apps

Wenn Sie einen Codeausschnitt in Ihrer Logik-App ausführen möchten, können Sie die integrierte Aktion Inlinecode im Workflow Ihrer Logik-App hinzufügen.When you want to run a piece of code inside your logic app, you can add the built-in Inline Code action as a step in your logic app's workflow. Diese Aktion ist auf die Ausführung von Code im folgenden Szenario ausgelegt:This action works best when you want to run code that fits this scenario:

  • Ausführung in JavaScript.Runs in JavaScript. Weitere Sprachen in Kürze verfügbar.More languages coming soon.

  • Ausführung wird in höchstens fünf Sekunden abgeschlossen.Finishes running in five seconds or fewer.

  • Verarbeitet Daten mit einer Größe von bis zu 50 MB.Handles data up to 50 MB in size.

  • Erfordert nicht die Verwendung von Variables-Aktionen, die noch nicht unterstützt werden.Doesn't require working with the Variables actions, which are not yet supported.

  • Verwendung von Node.js-Version 8.11.1.Uses Node.js version 8.11.1. Weitere Informationen finden Sie unter Integrierte Standardobjekte.For more information, see Standard built-in objects.

    Hinweis

    Die require()-Funktion wird von der Inlinecode-Aktion zur Ausführung von JavaScript nicht unterstützt.The require() function isn't supported by the Inline Code action for running JavaScript.

Diese Aktion führt den Codeausschnitt aus und gibt die Ausgabe des Codeausschnitts als Token mit dem Namen Result zurück.This action runs the code snippet and returns the output from that snippet as a token that's named Result. Sie können dieses Token mit nachfolgenden Aktionen im Workflow ihrer Logik-App verwenden.You can use this token with subsequent actions in your logic app's workflow. Wenn Sie in anderen Szenarien eine Funktion für Ihren Code erstellen möchten, versuchen Sie, in der Logik-App stattdessen eine Azure-Funktion zu erstellen und aufzurufen.For other scenarios where you want to create a function for your code, try creating and calling an Azure function instead in your logic app.

In diesem Artikel wird die Beispiel-Logik-App ausgelöst, wenn eine neue E-Mail in einem Geschäfts-, Schul- oder Unikonto empfangen wird.In this article, the example logic app triggers when a new email arrives in a work or school account. Der Codeausschnitt extrahiert und gibt alle E-Mail-Adressen zurück, die im E-Mail-Text enthalten sind.The code snippet extracts and returns any email addresses that appear in the email body.

Screenshot: Beispiel für eine Logik-App

VoraussetzungenPrerequisites

  • Ein Azure-Abonnement.An Azure subscription. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie sich für ein kostenloses Azure-Konto registrieren.If you don't have an Azure subscription, sign up for a free Azure account.

  • Die Logik-App, in der der Codeausschnitt hinzugefügt werden soll, einschließlich eines Triggers.The logic app where you want to add your code snippet, including a trigger. Wenn Sie über keine Logik-App verfügen, lesen Sie den Artikel Schnellstart: Erstellen Ihres ersten automatisierten Workflows mit Azure Logic Apps – Azure-Portal.If you don't have a logic app, see Quickstart: Create your first logic app.

    Das Beispiel in diesem Thema verwendet den Office 365 Outlook-Trigger mit dem Namen Wenn eine neue E-Mail empfangen wird.The example in this topic uses the Office 365 Outlook trigger that's named When a new email arrives.

  • Ein mit Ihrer Logik-App verknüpftes Integrationskonto.An integration account that's linked to your logic app.

    • Achten Sie darauf, dass Sie ein Integrationskonto verwenden, das für Ihren Anwendungsfall oder Ihr Szenario geeignet ist.Make sure that you use an integration account that's appropriate for your use case or scenario.

      Beispielsweise gilt für Integrationskonten im Free-Tarif, dass sie für explorative Szenarien und Workloads, nicht für Produktionsszenarien vorgesehen sind, in Nutzung und Durchsatz beschränkt sind und von einer Vereinbarung zum Servicelevel (Service-Level Agreement, SLA) nicht unterstützt werden.For example, Free-tier integration accounts are meant only for exploratory scenarios and workloads, not production scenarios, are limited in usage and throughput, and aren't supported by a service-level agreement (SLA). Andere Tarife verursachen Kosten, beinhalten jedoch SLA-Unterstützung, bieten mehr Durchsatz und haben höhere Grenzwerte.Other tiers incur costs, but include SLA support, offer more throughput, and have higher limits. Weitere Informationen finden Sie hier: Integrationskonto-Tarife, -Preise und -Grenzwerte.Learn more about integration account tiers, pricing, and limits.

    • Wenn Sie kein Integrationskonto verwenden möchten, können Sie versuchen, Azure Logic Apps Vorschau zu verwenden, und eine Logik-App aus dem Ressourcentyp Logik-App (Vorschau) erstellen.If you don't want to use an integration account, you can try using Azure Logic Apps Preview, and create a logic app from the Logic App (Preview) resource type.

      In Azure Logic Apps Vorschau heißt Inlinecode jetzt Inlinecodevorgänge. Die folgenden Unterschiede gelten ebenfalls:In Azure Logic Apps Preview, Inline Code is now named Inline Code Operations along with these other differences:

      • JavaScript-Code ausführen heißt jetzt Inline-JavaScript ausführen.Execute JavaScript Code is now named Run in-line JavaScript.

      • Unter macOS oder Linux sind Aktionen von Inlinecodevorgängen derzeit nicht verfügbar, wenn Sie die Azure Logic Apps-Erweiterung (Vorschau) in Visual Studio Code verwenden.If you use macOS or Linux, the Inline Code Operations actions are currently unavailable when you use the Azure Logic Apps (Preview) extension in Visual Studio Code.

      • Die Grenzwerte für Aktionen in Inlinecodevorgängen wurden aktualisiert.Inline Code Operations actions have updated limits.

      Sie können mit beiden Optionen beginnen:You can start from either option here:

Inlinecode hinzufügenAdd inline code

  1. Öffnen Sie, falls noch nicht geschehen, Ihre Logik-App über das Azure-Portal im Designer für Logik-Apps.If you haven't already, in the Azure portal, open your logic app in the Logic App Designer.

  2. Fügen Sie im Designer die Aktion „Inlinecode“ im Workflow der Logik-App hinzu.In the designer, choose where to add the Inline Code action in your logic app's workflow.

    • Wenn Sie die Aktion am Ende des Workflows hinzufügen möchten, wählen Sie Neuer Schritt aus.To add the action at the end of your workflow, select New step.

    • Wenn die Aktion zwischen Schritten hinzugefügt werden soll, bewegen Sie den Mauszeiger über den Pfeil, der die betreffenden Schritte verbindet.To add the action between steps, move your mouse pointer over the arrow that connects those steps. Wählen Sie das daraufhin angezeigte Pluszeichen ( + ) aus, und klicken Sie auf Aktion hinzufügen.Select the plus sign (+) that appears, and select Add an action.

    In diesem Beispiel wird die Aktion Inline Code unter dem Office 365 Outlook-Trigger hinzugefügt.This example adds the Inline Code action under the Office 365 Outlook trigger.

    Hinzufügen eines neuen Schritts unter dem Trigger

  3. Geben Sie unter Aktion auswählen den Text inline code in das Suchfeld ein.Under Choose an action, in the search box, enter inline code. Wählen Sie in der Aktionenliste die Aktion namens JavaScript-Code ausführen aus.From the actions list, select the action named Execute JavaScript Code.

    Auswählen der Aktion „JavaScript-Code ausführen“

    Die Aktion wird im Designer angezeigt und enthält standardmäßig Beispielcode einschließlich einer return-Anweisung.The action appears in the designer and by default, contains some sample code, including a return statement.

    Inlinecode-Aktion mit Standard-Beispielcode

  4. Löschen Sie im Feld Code den Beispielcode, und geben Sie Ihren Code ein.In the Code box, delete the sample code, and enter your code. Schreiben Sie den Code, den Sie in eine Methode einschließen, jedoch ohne Methodensignatur.Write the code that you'd put inside a method, but without the method signature.

    Wenn Sie ein erkanntes Schlüsselwort eingeben, wird die AutoVervollständigen-Liste angezeigt, sodass Sie unter den verfügbaren Schlüsselwörter auswählen können. Beispiel:If you start typing a recognized keyword, the autocomplete list appears so that you can select from available keywords, for example:

    AutoVervollständigen-Liste für Schlüsselwörter

    In diesem Beispielcodeausschnitt wird zuerst eine Variable erstellt, die einen regulären Ausdruck speichert, der ein im Eingabetext zu suchendes Muster angibt.This example code snippet first creates a variable that stores a regular expression, which specifies a pattern to match in input text. Anschließend wird im Code eine Variable erstellt, die die E-Mail-Textdaten aus dem Trigger speichert.The code then creates a variable that stores the email body data from the trigger.

    Erstellen von Variablen

    Um das Verweisen auf Ergebnisse des Triggers und früherer Aktionen zu erleichtern, wird die Liste der dynamischen Inhalte angezeigt, wenn sich der Cursor im Feld Code befindet.To make the results from the trigger and previous actions easier to reference, the dynamic content list appears when your cursor is inside the Code box. Für dieses Beispiel werden in der Liste verfügbare Ergebnisse aus dem Trigger aufgeführt, u.a. das Body-Token, das nun ausgewählt werden kann.For this example, the list shows available results from the trigger, including the Body token, which you can now select.

    Nachdem Sie das Body-Token ausgewählt haben, löst die Inlinecode-Aktion das Token in ein workflowContext-Objekt auf, das auf den Body-Eigenschaftswert der E-Mail verweist:After you select the Body token, the inline code action resolves the token to a workflowContext object that references the email's Body property value:

    Auswählen des Ergebnisses

    Im Feld Code kann der Codeausschnitt das schreibgeschützte workflowContext-Objekt als Eingabe verwenden.In the Code box, your snippet can use the read-only workflowContext object as input. Dieses Objekt enthält Eigenschaften auf, die dem Code Zugriff auf die Ergebnisse des Triggers und früherer Aktionen im Workflow gewähren.This object includes properties that give your code access to the results from the trigger and previous actions in your workflow. Weitere Informationen finden Sie unter Verweisen auf die Ergebnisse von Triggern und Aktionen in Ihrem Code weiter unten in diesem Thema.For more information, see Reference trigger and action results in your code later in this topic.

    Hinweis

    Wenn der Codeausschnitt auf Aktionsnamen verweist, in denen der Punktoperator (.) verwendet wird, müssen Sie die betreffenden Aktionsnamen dem Actions-Parameter hinzufügen.If your code snippet references action names that use the dot (.) operator, you must add those action names to the Actions parameter. In diesen Verweise müssen die Aktionsnamen zudem in eckige Klammern ([]) und Anführungszeichen eingeschlossen sein. Beispiel:Those references must also enclose the action names with square brackets ([]) and quotation marks, for example:

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

    Die Aktion „Inlinecode“ erfordert keine return-Anweisung, die Ergebnisse einer return-Anweisung sind jedoch über das Result-Token als Verweis in späteren Aktionen verfügbar.The Inline Code action doesn't require a return statement, but the results from a return statement are available for reference in later actions through the Result token. Der Codeabschnitt gibt z.B. das Ergebnis durch einen Aufruf der match()-Funktion zurück, die Übereinstimmungen im E-Mail-Text anhand des regulären Ausdrucks findet.For example, the code snippet returns the result by calling the match() function, which finds matches in the email body against the regular expression. Die Compose-Aktion verweist mithilfe des Result-Tokens auf die Ergebnisse der Inlinecode-Aktion und erstellt ein einzelnes Ergebnis.The Compose action uses the Result token to reference the results from the inline code action and creates a single result.

    Fertiggestellte Logik-App

  5. Wenn Sie fertig sind, speichern Sie Ihre Logik-App.When you're done, save your logic app.

Verweisen auf Ergebnisse von Triggern und Aktionen im CodeReference trigger and action results in your code

Das workflowContext-Objekt weist diese Struktur auf und schließt die untergeordneten Eigenschaften actions, trigger und workflow ein:The workflowContext object has this structure, which includes the actions, trigger, and workflow subproperties:

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

Diese Tabelle enthält weitere Informationen zu den untergeordneten Eigenschaften:This table contains more information about these subproperties:

EigenschaftProperty typeType BESCHREIBUNGDescription
actions ObjektsammlungObject collection Ergebnisobjekte von Aktionen, die vor der Ausführung des Codeausschnitts ausgeführt werden.Result objects from actions that run before your code snippet runs. Jedes Objekt verfügt über ein Schlüssel-Wert-Paar, bei dem der Schlüssel den Namen einer Aktion angibt und der Wert dem Aufruf der actions()-Funktion mit @actions('<action-name>') entspricht.Each object has a key-value pair where the key is the name of an action, and the value is equivalent to calling the actions() function with @actions('<action-name>'). Als Name der Aktion wird der Aktionsname verwendet, der auch in der zugrunde liegenden Workflowdefinition verwendet wird, wobei Leerzeichen (" ") im Aktionsnamen durch Unterstriche () ersetzt werden.The action's name uses the same action name that's used in the underlying workflow definition, which replaces spaces (" ") in the action name with underscores (). Dieses Objekt bietet Zugriff auf Eigenschaftswerte der Aktion aus der aktuellen Ausführung der Workflowinstanz.This object provides access to action property values from the current workflow instance run.
trigger ObjectObject Ergebnisobjekt aus dem Trigger, das einem Aufruf der trigger()-Funktion entspricht.Result object from the trigger and equivalent to calling the trigger() function. Dieses Objekt bietet Zugriff auf Eigenschaftswerte des Triggers aus der aktuellen Ausführung der Workflowinstanz.This object provides access to trigger property values from the current workflow instance run.
workflow ObjectObject Das Workflow-Objekt, das einem Aufruf der workflow()-Funktion entspricht.The workflow object and equivalent to calling the workflow() function. Dieses Objekt bietet Zugriff auf Workflow-Eigenschaftswerte (z.B. Workflowname, Ausführungs-ID usw.) aus der aktuellen Ausführung der Workflowinstanz.This object provides access to workflow property values, such as the workflow name, run ID, and so on, from the current workflow instance run.

In Beispiel in diesem Artikel verfügt das workflowContext-Objekt über die folgenden Eigenschaften, auf die der Code zugreifen kann:In this topic's example, the workflowContext object has these properties that your code can access:

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

Hinzufügen von ParameternAdd parameters

Gelegentlich müssen Sie explizit fordern, dass die Inline Code-Aktion Ergebnisse des Triggers oder bestimmter Aktionen einschließt, auf die der Code als Abhängigkeiten verweist, indem auf den Trigger-Parameter oder Actions-Parameter verwiesen wird.In some cases, you might have to explicitly require that the Inline Code action includes results from the trigger or specific actions that your code references as dependencies by adding the Trigger or Actions parameters. Diese Option ist hilfreich in Szenarien, bei denen die Ergebnisse, auf die verwiesen wird, zur Laufzeit nicht gefunden werden.This option is useful for scenarios where the referenced results aren't found at run time.

Tipp

Wenn der Code wiederverwendet werden soll, fügen Sie über das Feld Code Verweise auf Eigenschaften hinzu, sodass der Code die aufgelösten Codeverweise einschließt, anstatt den Trigger oder die Aktionen als explizite Abhängigkeiten hinzuzufügen.If you plan to reuse your code, add references to properties by using the Code box so that your code includes the resolved token references, rather than adding the trigger or actions as explicit dependencies.

Angenommen, in Ihrem Code wird auf das SelectedOption-Ergebnis aus der Aktion Genehmigungs-E-Mail senden für den Office 365 Outlook-Connector verwiesen.For example, suppose you have code that references the SelectedOption result from the Send approval email action for the Office 365 Outlook connector. Zur Erstellungszeit analysiert das Logic Apps-Modul den Code, um zu bestimmen, ob auf Ergebnisse von Triggern oder Aktionen verwiesen wurde, und diese Ergebnisse werden automatisch eingeschlossen.At create time, the Logic Apps engine analyzes your code to determine whether you've referenced any trigger or action results and includes those results automatically. Wird zur Laufzeit ein Fehler ausgegeben, der besagt, dass das Ergebnis des referenzierten Triggers bzw. der referenzierten Aktion im angegebenen workflowContext-Objekt nicht verfügbar ist, können Sie den Trigger bzw. die Aktion als explizite Abhängigkeit hinzufügen.At run time, should you get an error that the referenced trigger or action result isn't available in the specified workflowContext object, you can add that trigger or action as an explicit dependency. In diesem Beispiel fügen Sie den Actions-Parameter hinzu und geben an, dass die Inline Code-Aktion explizit das Ergebnis der Aktion Genehmigungs-E-Mail senden einschließt.In this example, you add the Actions parameter and specify that the Inline Code action explicitly include the result from the Send approval email action.

Öffnen Sie zum Hinzufügen dieser Parameter die Liste Neuen Parameter hinzufügen, und wählen Sie die gewünschten Parameter aus:To add these parameters, open the Add new parameter list, and select the parameters you want:

Hinzufügen von Parametern

ParameterParameter BESCHREIBUNGDescription
AktionenActions Schließen Sie Ergebnisse aus früheren Aktionen ein.Include results from previous actions. Siehe Einschließen der Ergebnisse von Aktionen.See Include action results.
TriggerTrigger Schließen Sie Ergebnisse des Triggers ein.Include results from the trigger. Siehe Einschließen der Ergebnisse des Triggers.See Include trigger results.

Einschließen der Ergebnisse des TriggersInclude trigger results

Wenn Sie Trigger auswählen, werden Sie gefragt, ob Triggerergebnisse eingeschlossen werden sollen.If you select Triggers, you're prompted whether to include trigger results.

  • Wählen Sie in der Liste Trigger die Option Ja aus.From the Trigger list, select Yes.

Einschließen der Ergebnisse von AktionenInclude action results

Wenn Sie Aktionen auswählen, werden Sie aufgefordert, die hinzuzufügenden Aktionen anzugeben.If you select Actions, you're prompted for the actions that you want to add. Bevor Sie jedoch mit dem Hinzufügen von Aktionen beginnen, benötigen Sie jedoch die Version des Aktionsnamens, der in der Definition des zugrunde liegenden Workflows der Logik-App angezeigt wird.However, before you start adding actions, you need the version of the action name that appears in the logic app's underlying workflow definition.

  • Diese Funktion unterstützt keine Variablen, Schleifen und Iterationsindizes.This capability doesn't support variables, loops, and iteration indexes.

  • In den Namen in der Workflowdefinition der Logik-App wird anstelle eines Leerzeichens ein Unterstrich () verwendet.Names in your logic app's workflow definition use an underscore (), not a space.

  • Für Aktionsnamen mit dem Punktoperator (.) müssen Sie diese Operatoren einschließen. Beispiel:For action names that use the dot operator (.), include those operators, for example:

    My.Action.Name

  1. Wählen Sie auf der Symbolleiste des Designers die Option Codeansicht aus, und suchen Sie im actions-Attribut nach dem Aktionsnamen.On the designer toolbar, select Code view, and search inside the actions attribute for the action name.

    Send_approval_email_ ist beispielsweise der JSON-Name für die Aktion Genehmigungs-E-Mail senden.For example, Send_approval_email_ is the JSON name for the Send approval email action.

    Suchen des Aktionsnamens im JSON-Format

  2. Wählen Sie auf der Symbolleiste „Codeansicht“ die Option Designer aus, um zur Designeransicht zurückzukehren.To return to designer view, on the code view toolbar, select Designer.

  3. Um die erste Aktion hinzuzufügen, geben Sie im Feld Actions Item - 1 (Aktionselement – 1) den JSON-Namen der Aktion ein.To add the first action, in the Actions Item - 1 box, enter the action's JSON name.

    Eingeben der ersten Aktion

  4. Wählen Sie Neues Element hinzufügen aus, um eine weitere Aktion hinzuzufügen.To add another action, select Add new item.

VerweisReference

Weitere Informationen zu Struktur und Syntax der Aktion Execute JavaScript Code in der zugrunde liegenden Workflowdefinition der Logik-App in der Definitionssprache für Workflows finden Sie im Referenzabschnitt dieser Aktion.For more information about the Execute JavaScript Code action's structure and syntax in your logic app's underlying workflow definition using the Workflow Definition Language, see this action's reference section.

Nächste SchritteNext steps

Weitere Informationen zu Connectors für Azure Logic AppsLearn more about Connectors for Azure Logic Apps