Lägga till och köra JavaScript-kod infogat med arbetsflöden för Azure Logic Apps

Gäller för: Azure Logic Apps (Förbrukning + Standard)

Om du vill utföra anpassade integreringsuppgifter i ditt arbetsflöde i Azure Logic Apps kan du lägga till och köra enkla JavaScript-kodfragment direkt från arbetsflödet i Azure Portal. För den här uppgiften använder du åtgärden Infogad kod med namnet Kör JavaScript Code. Den här åtgärden returnerar resultatet från kodfragmentet så att du kan använda utdata i arbetsflödets efterföljande åtgärder. Den här åtgärden har också olika gränser, beroende på om du har ett förbruknings- eller standardarbetsflöde och fungerar bäst för kodfragment med följande attribut:

Åtgärd Språk Språkversion Körningens varaktighet Datastorlek Andra noteringar
Köra JavaScript-kod JavaScript Standard:
Node.js 16.x.x

Förbrukning:
Node.js 8.11.1

Mer information finns i Standard inbyggda objekt.
Avslutas om 5 sekunder eller färre. Hanterar data upp till 50 MB. – Kräver inte att du arbetar med variablerna, som inte stöds av åtgärden.

– Stöder require() inte funktionen för att köra JavaScript.

Om du vill köra kod som inte passar dessa attribut kan du skapa och anropa en funktion med hjälp av Azure Functions.

Den här guiden visar hur åtgärden fungerar i ett exempelarbetsflöde som börjar med en Office 365 Outlook-utlösare. Arbetsflödet körs när ett nytt e-postmeddelande kommer till det associerade Outlook-e-postkontot. Exempelkodfragmentet extraherar alla e-postadresser som finns i e-postmeddelandets brödtext och returnerar de adresser som utdata som du kan använda i en efterföljande åtgärd.

Följande diagram visar höjdpunkterna från exempelarbetsflödet:

Förutsättningar

Lägg till åtgärden Execute JavaScript Code (Kör JavaScript Code)

  1. I Azure Portal öppnar du arbetsflödet för förbrukningslogikappen i designern.

  2. I designern följer du de här allmänna stegen för att lägga till åtgärden Infogad kod med namnet Kör JavaScript Code i arbetsflödet.

    Det här exemplet lägger till åtgärden under Office 365 Outlook-utlösaren. Som standard innehåller åtgärden viss exempelkod, inklusive en return -instruktion.

    Skärmbild som visar åtgärden Kör JavaScript Code med standardexempelkod.

  3. I rutan Kod tar du bort exempelkoden och anger din kod. Skriv den kod som du skulle placera i en metod, men utan metodsignaturen.

    Dricks

    När markören finns i rutan Kod visas listan med dynamiskt innehåll. Även om du använder den här listan senare kan du ignorera och lämna listan öppen för tillfället. Välj inte Dölj.

    Om du börjar skriva ett identifierat nyckelord visas listan med automatisk komplettering så att du kan välja bland tillgängliga nyckelord, till exempel:

    Skärmbild som visar förbrukningsarbetsflödet, åtgärden Kör JavaScript Code och listan med automatisk komplettering av nyckelord.

    I följande exempelkodfragment skapas först en variabel med namnet myResult som lagrar ett reguljärt uttryck, som anger ett mönster som ska matchas i indatatext. Koden skapar sedan en variabel med namnet e-post som lagrar e-postmeddelandets brödtextinnehåll från utlösarens utdata.

    Skärmbild som visar förbrukningsarbetsflödet, åtgärden Kör JavaScript Code och exempelkod som skapar variabler.

  4. Med markören kvar i rutan Kod letar du upp avsnittet När ett nytt e-postmeddelande kommer från listan med öppet dynamiskt innehåll och väljer egenskapen Brödtext som refererar till e-postmeddelandets brödtext.

    Skärmbild som visar arbetsflödet Förbrukning, Åtgärden Kör JavaScript Code, listan med dynamiskt innehåll och e-postmeddelandets egenskap

    Listan med dynamiskt innehåll visar utdata från utlösaren och eventuella föregående åtgärder när dessa utdata matchar indataformatet för redigeringsrutan som för närvarande är i fokus. Den här listan gör dessa utdata enklare att använda och referera till från arbetsflödet. I det här exemplet visar listan utdata från Outlook-utlösaren, inklusive e-postmeddelandets egenskap Brödtext .

    När du har valt egenskapen Brödtext löser åtgärden Kör JavaScript Code token till ett skrivskyddat workflowContext JSON-objekt, som kodfragmentet kan använda som indata. Objektet workflowContext innehåller egenskaper som ger din kod åtkomst till utdata från utlösaren och föregående åtgärder i arbetsflödet, till exempel utlösarens body egenskap, som skiljer sig från e-postmeddelandets egenskap Brödtext . Mer information om objektet finns i workflowContext Referensutlösare och åtgärdsutdata med hjälp av workflowContext-objektet senare i den här artikeln.

    Viktigt!

    Om kodfragmentet refererar till åtgärdsnamn som innehåller punktoperatorn (.) måste dessa referenser omsluta dessa åtgärdsnamn med hakparenteser ([]) och citattecken (""), till exempel:

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

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

    I åtgärden Execute JavaScript Code (Kör JavaScript Code) måste du också lägga till parametern Actions (Åtgärder) och sedan lägga till dessa åtgärdsnamn i parametern. Mer information finns i Lägga till beroenden som parametrar i en Execute JavaScript Code-åtgärd senare i den här artikeln.

  5. Om du vill särskilja e-postmeddelandets body-egenskap som du valde från utlösarens body egenskap byter du namn på den andra body egenskapen till Body i stället. Lägg till det avslutande semikolonet (;) i slutet för att slutföra kodsatsen.

    Skärmbild som visar arbetsflödet för förbrukningslogikappen, åtgärden Kör JavaScript Code och egenskapen

    Åtgärden Kör JavaScript Code kräver inte syntaktiskt en return instruktion. Men genom att inkludera -instruktionen return kan du enklare referera till åtgärdsresultaten senare i arbetsflödet med hjälp av resultattoken i senare åtgärder.

    I det här exemplet returnerar kodfragmentet resultatet genom att anropa match() funktionen, som hittar matchningar i e-postmeddelandets brödtext till det angivna reguljära uttrycket. Åtgärden Skapa HTML-tabell använder sedan resultattoken för att referera till resultaten från åtgärden Execute JavaScript Code (Kör JavaScript Code ) och skapar ett enda resultat.

    Skärmbild som visar det färdiga arbetsflödet för förbrukningslogikappen.

  6. Spara arbetsflödet när du är klar.

Referensutlösare och åtgärdsutdata med hjälp av workflowContext-objektet

Inifrån kodfragmentet i designern kan du använda listan med dynamiskt innehåll för att välja en token som refererar till utdata från utlösaren eller någon föregående åtgärd. När du väljer token löser åtgärden Kör JavaScript Code den token till ett skrivskyddat workflowContext JSON-objekt. Det här objektet ger din kod åtkomst till utdata från utlösaren, eventuella föregående åtgärder och arbetsflödet. Objektet använder följande struktur och innehåller actionsegenskaperna , triggeroch workflow som också är objekt:

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

I följande tabell finns mer information om dessa egenskaper:

Property Type Beskrivning
actions Objektsamling Resultatobjekten från föregående åtgärder som körs innan kodfragmentet körs. Varje objekt har ett nyckel/värde-par där nyckeln är åtgärdsnamnet och värdet motsvarar resultatet från att anropa funktionen actions() med @actions('<action-name>') uttrycket.

Åtgärdens namn använder samma åtgärdsnamn som visas i den underliggande arbetsflödesdefinitionen, som ersätter blanksteg (" ") i åtgärdsnamnet med understreck (_). Den här objektsamlingen ger åtkomst till åtgärdens egenskapsvärden från den aktuella arbetsflödesinstanskörningen.
trigger Objekt Resultatobjektet från utlösaren där resultatet motsvarar att anropa funktionen trigger(). Det här objektet ger åtkomst till utlösarens egenskapsvärden från den aktuella arbetsflödesinstanskörningen.
workflow Objekt Arbetsflödesobjektet som motsvarar att anropa funktionen workflow(). Det här objektet ger åtkomst till egenskapsvärdena, till exempel arbetsflödesnamnet, körnings-ID och så vidare, från den aktuella arbetsflödesinstanskörningen.

I den här artikelns exempel workflowContext kan JSON-objektet ha följande exempelegenskaper och värden från Outlook-utlösaren:

{
   "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"
         }
      }
   }
}

Lägga till beroenden som parametrar i en Körning av JavaScript Code-åtgärd

I vissa scenarier kan du behöva kräva att åtgärden Kör JavaScript Code uttryckligen innehåller utdata från utlösaren eller åtgärderna som koden refererar till som beroenden. Du måste till exempel ta det här extra steget när koden refererar till utdata som inte är tillgängliga vid arbetsflödets körningstid. När arbetsflödet skapas analyserar Azure Logic Apps-motorn kodfragmentet för att avgöra om koden refererar till någon utlösare eller åtgärd. Om dessa referenser finns innehåller motorn dessa utdata automatiskt. Om den refererade utlösaren eller åtgärdsutdatan inte hittas i objektet vid körningen workflowContext av arbetsflödet genererar motorn ett fel. För att lösa det här felet måste du lägga till utlösaren eller åtgärden som ett explicit beroende för åtgärden Kör JavaScript Code . Ett annat scenario som kräver att du tar det här steget är när workflowContext objektet refererar till en utlösare eller ett åtgärdsnamn som använder punktoperatorn (.).

Om du vill lägga till en utlösare eller åtgärd som ett beroende lägger du till parametrarna Utlösare eller Åtgärder enligt vad som är tillämpligt för åtgärden Kör JavaScript Code. Sedan lägger du till utlösar- eller åtgärdsnamnen som de visas i arbetsflödets underliggande JSON-definition.

Kommentar

Du kan inte lägga till variabler , loopar som För varje eller Till och iterationsindex som explicita beroenden.

Om du planerar att återanvända koden ska du alltid använda redigeringsrutan för kodfragmentet för att referera till utlösar- och åtgärdsutdata. På så sätt innehåller koden de lösta tokenreferenserna i stället för att bara lägga till utlösaren eller åtgärdens utdata som explicita beroenden.

Anta till exempel att office 365 Outlook-anslutningsappens e-poståtgärd Skicka godkännande föregår kodfragmentet i exempelarbetsflödet. Följande exempelkodfragment innehåller en referens till SelectedOption-utdata från den här åtgärden.

I det här exemplet måste du bara lägga till parametern Åtgärder och sedan lägga till åtgärdens JSON-namn, Send_approval_email, i parametern . På så sätt anger du att åtgärden Execute JavaScript Code explicit innehåller utdata från åtgärden Skicka e-postgodkännande .

Hitta utlösarens eller åtgärdens JSON-namn

Innan du börjar behöver du JSON-namnet för utlösaren eller åtgärden i den underliggande arbetsflödesdefinitionen.

  • Namn i arbetsflödesdefinitionen använder ett understreck (_), inte ett blanksteg.

  • Om ett åtgärdsnamn använder punktoperatorn (.), inkluderar du operatorn, till exempel:

    My.Action.Name

  1. Välj Kodvy i verktygsfältet för arbetsflödesdesignern. actions Leta reda på åtgärdens namn i objektet.

    Är till exempel Send_approval_email JSON-namnet för åtgärden Skicka e-postgodkännande .

    Skärmbild som visar åtgärdsnamnet i JSON.

  2. Om du vill återgå till designervyn går du till verktygsfältet för kodvyn och väljer Designer.

  3. Lägg nu till JSON-namnet i åtgärden Execute JavaScript Code (Kör JavaScript Code ).

Lägg till utlösaren eller åtgärdsnamnet i åtgärden Execute JavaScript Code (Kör JavaScript Code)

  1. I åtgärden Execute JavaScript Code (Kör JavaScript Code ) öppnar du listan Lägg till ny parameter .

  2. I listan med parametrar väljer du följande parametrar som ditt scenario kräver.

    Parameter Description
    Åtgärder Inkludera utdata från föregående åtgärder som beroenden. När du väljer den här parametern uppmanas du att ange de åtgärder som du vill lägga till.
    Utlösare Inkludera utdata från utlösaren som beroenden. När du väljer den här parametern uppmanas du att ta med utlösarresultat. I listan Utlösare väljer du Alltså Ja.
  3. I det här exemplet väljer du parametern Åtgärder .

    Skärmbild som visar åtgärden Kör JavaScript Code med parametern Actions vald.

  4. I rutan Åtgärdsobjekt - 1 anger du åtgärdens JSON-namn.

    Skärmbild som visar rutan Åtgärdsobjekt -1 och åtgärdens JSON-namn.

  5. Om du vill lägga till ett annat åtgärdsnamn väljer du Lägg till nytt objekt.

  6. Spara arbetsflödet när du är klar.

Åtgärdsreferens

Mer information om åtgärden Execute JavaScript Code's structure and syntax in your underlying workflow definition using the Workflow Definition Language (Kör JavaScript Code-åtgärdens struktur och syntax i den underliggande arbetsflödesdefinitionen med hjälp av arbetsflödesdefinitionsspråket ) finns i referensavsnittet för den här åtgärden.

Nästa steg