Spring til indhold
Menu

Artikler

Sådan bruger du RegEx i Power Automate

Sådan bruger du Regular Expressions i Power Automate: byg mønstre, test dem, og udtræk strukturerede data fra mails og dokumenter i dine cloud flows.

Anders Jensen Automatiserings- og AI-instruktør

Intro

Er dataene strukturerede, er go-to-løsningen Regular Expressions (RegEx). Denne artikel forudsætter, at du har grundlæggende kendskab til RegEx. Har du ikke det, så se denne video.

Office Scripts i Power Automate (den gratis løsning)

Office Scripts er "det nye VBA" og lader dig automatisere alt i Excel på nettet (Excel Online). Office Scripts skrives i enten JavaScript eller TypeScript, som er næsten det samme.

Løsningen på gratis RegEx-understøttelse i Power Automate er at lave et simpelt TypeScript med RegEx-understøttelse i Excel Online som et Office Script og derefter kalde scriptet fra Power Automate. Her er din opskrift i 2 trin:

Opret Office Scriptet

Fig. 1.1 - Gå til Office.com og klik på Excel-ikonet

Gå til https://www.office.com, log ind med dine Microsoft-legitimationsoplysninger, klik på Excel-ikonet (Fig. 1.1) og åbn en 'New blank workbook'.

Kan du ikke se Excel-ikonet på din office.com-side, så klik på de ni sorte prikker i øverste venstre hjørne og find Excel-ikonet dér.

Fig. 1.2: Omdøb Excel-projektmappen

(Dette trin er ikke nødvendigt, men anbefalet.) Har du ikke en Excel-projektmappe til de Office Scripts, du bruger i Power Automate, er det nu, du opretter en. Omdøb den ved at klikke på projektmappens nuværende navn (Fig. 1.2) og ændre filnavnet til 'PowerAutomateScripts'.

Denne Excel-projektmappe kan nu bruges som beholder for Office Scripts i Power Automate.

Fig. 1.3: Opret et nyt Office Script

For at oprette et nyt Office Script klikker du på 'Automate' (i topmenuen), derefter 'All Scripts' og til sidst 'New Scripts' (Fig. 1.3).

Fig. 1.4: Standard-Office Script

Sådan ser et standard-Office Script ud (Fig. 1.4). Markér hele scriptet med Ctrl+A, så det bliver blåt. Tryk på Delete, og se standardkoden forsvinde.

Du kan også omdøbe scriptet ved at klikke på 'Script 1'. Kald det fx 'RegEx Match'.

Kopiér til sidst følgende script ind i editoren:

function main
  (
    workbook: ExcelScript.Workbook, inputString: string, pattern: string, flags: string
  ): Array<string> {
  let regExp = new RegExp(pattern, flags);
  let matches: Array<string> = inputString.match(regExp);

  if (matches) {
    return matches;
  } else {
    return [];
  }

}
Fig. 1.5: RegEx-scriptet

Dit script bør se sådan ud (Fig. 1.5). Office Scriptet kan nu kaldes i Power Automate.

Kald RegEx-Office Scriptet fra Power Automate

Med Office Scriptet fra del 1 på plads kan scriptet nu kaldes fra Power Automate.

Fig. 1.6: Run script

Find 'Run script'-connectoren og udfyld Location, Document Library, File og Script (Fig. 1.6).

Tre parametre skal udfyldes:

  • inputString: Input-strengen, du vil udtrække data fra. Det kan være dynamisk indhold fra en tidligere action.
  • pattern: Dit RegEx-mønster.
  • flags: Dine RegEx-flags.
Fig. 1.7: RegEx-eksempelflow

Fig. 1.7 viser, hvordan du bruger RegEx-Office Scriptet:

  • Manually trigger a flow. Simpel attended automatisering, hvor brugeren starter flowet.
  • Compose. Input-strengen. Den kan komme fra alle statiske og dynamiske kilder i Power Automate.
  • Run script. Udfyld indstillingerne/parametrene. I 'inputString' bruger vi det dynamiske indhold fra 'Compose'. RegEx-mønstret udfyldes i 'pattern', og det samme gælder flags.

Min inputString:

This is a text script to test our RegEx script/connector. Of course, you can always reach me at anders@andersjensen.org, but if you want a guaranteed answer, please post your question/feedback in the comments below. Kind regards, Anders Jensen dontuse@thisemail.com

Mit RegEx-mønster:

[A-Za-z0-9]+@[A-Za-z0-9]+\.[A-Za-z]+
Fig. 1.8: Resultatet

Kør flowet, og se derefter outputtet under 'result' (Fig. 1.8). Det er et array af strenge og er vores matches.

Fig. 1.9: Udskriv resultaterne

Fig. 1.9 viser, hvordan du udskriver resultaterne, altså hver streng i arrayet. Brug først en 'Apply to each' med 'result' som input. Tilføj så en 'Compose', og brug i 'Input' det dynamiske output fra 'Apply to each'.

Fig. 1.10: Udskriv et bestemt element

Fig. 1.10 viser, hvordan du udskriver et bestemt element blandt vores matches i arrayet med udtrykket:

outputs('Run_script')?['body/result'][0]

Plumsail - ubegrænset RegEx i Power Automate

Arbejder du i et enterprise-setup, vil du sandsynligvis finde Office Scripts-RegEx-løsningen ubrugelig. Du må nemlig kun lave 400 Office Scripts-kald fra Power Automate om dagen.

Plumsail er go-to-løsningen til enterprise-RegEx-understøttelse i Power Automate. Den er ikke gratis, men prisen er rimelig.

Opret en Plumsail-konto

Fig. 2.1: Opret en Plumsail-konto

Gå til https://auth.plumsail.com/account/register og opret en konto (Fig. 2.1). Er du ikke logget ind bagefter, så gør det.

Fig. 2.2: Gå til Actions

Gå til 'Actions' ved at klikke på ikonet (Fig. 2.2). Kan du ikke se det, så find det ved at klikke på de 6 "hvide prikker" i øverste venstre hjørne.

Fig. 2.3: Opret API-nøgle

Klik på 'API key' under 'Create a new API key' (Fig. 2.3).

Fig. 2.4: Add new

Klik på 'Add new'.

Fig. 2.5: Opret en ny API-nøgle

Giv din nøgle et navn (1), vælg typen 'Basic' i dropdown-menuen (2) og klik på 'Create' (Fig. 2.5).

Fig. 2.6: Kopiér API-nøglen

Kopiér den oprettede API-nøgle (Fig. 2.6). Den skal vi bruge i Power Automate.

Brug Plumsail-connectoren i Power Automate

Kommentarer (14)

  1. John G

    Fremragende indlæg, Anders. Tak, fordi du deler det. Grænsen for, hvor mange Office Scripts en person kan køre om dagen, er blevet hævet fra 400 til 1.600. Det er et ret stort spring. Det har sikkert noget at gøre med, at mange bruger Office Scripts (nu hvor dit indlæg har introduceret mig til dem, er jeg sikker på, at jeg også kommer til det!). Reference: https://docs.microsoft.com/en-us/office/dev/scripts/testing/platform-limits

    Maskinoversat fra engelsk · Vis original

    Excellent post, Anders. Thanks for sharing. The limit on the number of Office Scripts an individual can run per day has been updated from 400 to 1,600. This is a pretty big jump; probably has something to do with the fact that people are using a lot of Office Scripts (now that I've been introduced to them by your post, I'm sure I will!). Ref: https://docs.microsoft.com/en-us/office/dev/scripts/testing/platform-limits

    1. Anders Jensen Forfatter

      Hej John. Det er virkelig fedt. 1.600 er måske stadig for lidt, når man automatiserer i enterprise-miljøer, men det går den rigtige vej. Hvis du har lyst, er du meget velkommen i mit developer-community: https://discord.gg/d8KQpTUvFD Og tusind tak for de pæne ord. Venlig hilsen Anders

      Maskinoversat fra engelsk · Vis original

      Hey John. That's so awesome. 1600 might still be too less when automating in the enterprise space, but it's getting there If you want, you're very welcome at my developer community: https://discord.gg/d8KQpTUvFD And thanks a lot for the nice words Kind regards, Anders

  2. Power automate start

    Hej, jeg bruger i øjeblikket AI Builder til at udtrække fakturabeløbet fra fakturaer. Workflowet er sat op, så dataene gemmes i en Excel-fil. Problemet er, at jeg vil fjerne tegn som €, £ og teksten “vat”. Hvordan kan jeg gøre det med regex? Kan du hjælpe mig? Jeg er helt på bar bund og har søgt på internettet i timevis. Så fandt jeg dette, som måske er løsningen, men jeg kender ikke regex.

    Maskinoversat fra engelsk · Vis original

    Hi, i am currently using AI builder to extract the invoice amount from invoices. The workflow is setup in a way that the data will be stores in an Excel file. The issue is that i want to remove characters like: €,£ and text: “vat” how can indo this with regex can you please help me i am lost searched for hours on internet then i found this which could be the solution but i am not familiar with regex

    1. Anders Jensen Forfatter

      Hej min ven. Kan du dele den udtrukne tekst? Enten her eller på min Discord: https://discord.gg/d8KQpTUvFD Venlig hilsen Anders

      Maskinoversat fra engelsk · Vis original

      Hey my friend. Can you post the extracted text? Either here or at my Discord: https://discord.gg/d8KQpTUvFD Kind regards, Anders

  3. Pankaj Verma

    Hej Anders. Kan du hjælpe mig med et regex til at udtrække URL'en fra tekst? Til reference er dette den slags URL'er, jeg skal udtrække.. https://jp.mercari.com/user/profile/694199619?utm_medium=share&utm_source=ios https://detail.1688.com/offer/737802537055.html?_t=1705034383213&spm=a2615.7691456.co_0_0_wangpu_score_0_0_0_0_1_0_0000_0.0 https://v.douyin.com/iLj72UyS/ https://jp.mercari.com/user/profile/694199619?utm_medium=share&utm_source=ios https://detail.1688.com/offer/737802537055.html?_t=1705034383213&spm=a2615.7691456.co_0_0_wangpu_score_0_0_0_0_1_0_0000_0.0 https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbusiness.facebook.com%2F61553619604448%2Fphotos%2F122099994878120653&data=05%7C02%7Cpankaj.verma%40chanel.com%7C48b8faaeae1044c96c8f08dc6466bae1%7Ce6cbec2f2f2343ca82c451a7c9b71e7a%7C0%7C0%7C638495639604611314%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=EnEdQX8Acbc1PZwycRNotzIJtpXF67THQdby3hq8HTo%3D&reserved=0 https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbusiness.facebook.com%2F61553619604448%2Fphotos%2F122099994884120653&data=05%7C02%7Cpankaj.verma%40chanel.com%7C48b8faaeae1044c96c8f08dc6466bae1%7Ce6cbec2f2f2343ca82c451a7c9b71e7a%7C0%7C0%7C638495639604618880%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=uOByQg3pFIUKrTb9x%2Bzdfxv4ATUj40v6zad0oFkjcyU%3D&reserved=0

    Maskinoversat fra engelsk · Vis original

    Hi Anders, Could please provide me regex for extracting the URL from text. for your ref below is the kind of URLs need to be extrated.. https://jp.mercari.com/user/profile/694199619?utm_medium=share&utm_source=ios https://detail.1688.com/offer/737802537055.html?_t=1705034383213&spm=a2615.7691456.co_0_0_wangpu_score_0_0_0_0_1_0_0000_0.0 https://v.douyin.com/iLj72UyS/ https://jp.mercari.com/user/profile/694199619?utm_medium=share&utm_source=ios https://detail.1688.com/offer/737802537055.html?_t=1705034383213&spm=a2615.7691456.co_0_0_wangpu_score_0_0_0_0_1_0_0000_0.0 https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbusiness.facebook.com%2F61553619604448%2Fphotos%2F122099994878120653&data=05%7C02%7Cpankaj.verma%40chanel.com%7C48b8faaeae1044c96c8f08dc6466bae1%7Ce6cbec2f2f2343ca82c451a7c9b71e7a%7C0%7C0%7C638495639604611314%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=EnEdQX8Acbc1PZwycRNotzIJtpXF67THQdby3hq8HTo%3D&reserved=0 https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbusiness.facebook.com%2F61553619604448%2Fphotos%2F122099994884120653&data=05%7C02%7Cpankaj.verma%40chanel.com%7C48b8faaeae1044c96c8f08dc6466bae1%7Ce6cbec2f2f2343ca82c451a7c9b71e7a%7C0%7C0%7C638495639604618880%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=uOByQg3pFIUKrTb9x%2Bzdfxv4ATUj40v6zad0oFkjcyU%3D&reserved=0

    1. Stine Høiberg Rasmussen

      Tak, fordi du skriver 😊 Vi får mere end 50 beskeder om dagen. Selvom vi læser dem alle, kan vi ikke svare alle 😔 Men vi har oprettet et RPA/Automation-community, hvor vi er mere end 14.000 RPA Developers, som hjælper hinanden med løsninger og karriere. Det er gratis, og du finder det her: https://discord.gg/iloveautomation Venlig hilsen Stine

      Maskinoversat fra engelsk · Vis original

      Thanks for writing 😊 We’re getting more than 50 messages daily. While we read all of them, we can’t reply to everyone 😔 But we’ve created an RPA/Automation community where we’re 14,000+ RPA Developers helping each other with solutions and our careers. It’s free, and you can find it here: https://discord.gg/iloveautomation Kind regards, Stine

  4. Magnus Jägre

    Hej Anders, tak for din lærerige video og dit site. Spørgsmål: Når jeg kalder Run Script i Power Automate, har jeg ikke mulighed for at indtaste pattern og flags. Er der en indstilling, jeg mangler?

    Maskinoversat fra engelsk · Vis original

    Hi Anders, thanks for your instructive video and site. Question: when i call for Run Script in Powerautomate i dont have the option to enter pattern and flags. Is there a setting im missing?

    1. Anders Jensen Forfatter

      Hej Magnus, tusind tak 😊😎 Nej, du burde have muligheden? Du er meget velkommen til at stille spørgsmålet med et screenshot i mit community: https://discord.gg/iloveautomation Det er 100 % gratis. Venlig hilsen Anders

      Maskinoversat fra engelsk · Vis original

      Hey Magnus, thanks a lot 😊😎 No, you should have it? You're more than welcome to post the question with a screenshot in my community: https://discord.gg/iloveautomation It's 100% free. Kind regards, Anders

  5. Nee

    Hej Anders, Hvordan kan jeg ændre dit Office Script, så det kun udtrækker brugernavnet og kopierer det til et andet ark? Mit regex er: .*(?=@)

    Maskinoversat fra engelsk · Vis original

    Hello Anders, How can I modify your office script to extract only the username, copy it to another sheet. My regex is: .*(?=@)

    1. Stine Høiberg Rasmussen

      Tak, fordi du skriver 😊 Vi får mere end 50 beskeder om dagen. Selvom vi læser dem alle, kan vi ikke svare alle 😔 Men vi har oprettet et RPA/Automation-community, hvor vi er mere end 14.000 RPA Developers, som hjælper hinanden med løsninger og karriere. Det er gratis, og du finder det her: https://discord.gg/iloveautomation Venlig hilsen Stine

      Maskinoversat fra engelsk · Vis original

      Thanks for writing 😊 We're getting more than 50 messages daily. While we read all of them, we can’t reply to everyone 😔 But we’ve created an RPA/Automation community where we’re 14,000+ RPA Developers helping each other with solutions and our careers. It’s free, and you can find it here: https://discord.gg/iloveautomation Kind regards, Stine

  6. Bades E

    Jeg har et problem, hvor alt før punktummet udelades, hvis e-mailens local-part indeholder et punktum. For eksempel bliver "first.last@email.com" returneret som "last@email.com"

    Maskinoversat fra engelsk · Vis original

    I have an issue where if the email contains a full stop in the local-part it excludes anything before the full stop. For example, "first.last@email.com" would be output as "last@email.com"

    1. Anders Jensen Forfatter

      Tak, fordi du skriver 😊 Jeg får mere end 50 beskeder om dagen. Selvom jeg læser dem alle, kan jeg ikke svare alle 😔 Men jeg har oprettet et RPA/Automation-community, hvor vi er mere end 14.000 RPA Developers, som hjælper hinanden med løsninger og karriere. Det er gratis, og du finder det her: https://discord.gg/iloveautomation Venlig hilsen Anders

      Maskinoversat fra engelsk · Vis original

      Thanks for writing 😊 I'm getting more than 50 messages daily. While I read all of them, I can’t reply to everyone 😔 But I’ve created an RPA/Automation community where we’re 14,000+ RPA Developers helping each other with solutions and our careers. It’s free, and you can find it here: https://discord.gg/iloveautomation Kind regards, Anders

  7. Austin

    Utroligt nyttigt. Det er den enkleste og mest komplette workaround, jeg kunne finde til den manglende indbyggede regex-funktion i Power Automate. TypeScript-koden til Excel-arket virkede med det samme. Skål, Anders! 🍻

    Maskinoversat fra engelsk · Vis original

    Incredibly helpful. This is the simplest and most complete workaround I could find for Power Automate lacking a native regex feature. The Typescript code for the Excel sheet worked out of the box. Cheers, Anders! 🍻

    1. Anders Jensen Forfatter

      Tusind tak, Austin 😊🙌 I dag kunne man også have brugt ChatGPT, Gemini eller Copilot. Hav en rigtig god dag. Venlig hilsen Anders

      Maskinoversat fra engelsk · Vis original

      Thanks a lot, Austin 😊🙌 In these days, ChatGPT, Gemini or Copilot could also have been used. Have a great day, kind regards, Anders

Skriv en kommentar

Dit navn og din kommentar vises offentligt efter godkendelse. Din e-mail vises ikke. Læs mere i privatlivspolitikken. Efter godkendelse kan kommentaren maskinoversættes til den anden sprogversion. Du kan altid se originalen.

Flere artikler

  • Granola API + Power Automate: Send mødereferatet til Teams

    Granola skriver referatet, men det bliver liggende i Granola. Byg et flow, der henter den seneste note via API'et og poster den i Microsoft Teams.

    Læs mere →
  • Microsoft Power Automate - tutorial for begyndere [2021]

    Komplet Power Automate-tutorial for begyndere: byg dine første cloud flows trin for trin med triggers, actions, betingelser og eksempler fra den virkelige verden.

    Læs mere →
  • Byg din første agent i det nye Copilot Studio

    Trin for trin: Byg en HR-agent i det nye Copilot Studio med instruktioner, knowledge og en skill, test den i Preview, og publicér den til Teams. Med video.

    Læs mere →