Power Fx i skrivebordsflows
Power Fx er det low-code-sprog, der bruges til at udtrykke logik på tværs af Microsoft Power Platform. Det er et generelt, beskrivende og funktionelt programmeringssprog med stærke datatyper.
Power Fx er et sprog med brugervenlig tekst. Det er et sprog med lav kode, som oprettere kan arbejde med direkte på et Excel-lignende formellinje eller i et Visual Studio Code-tekstvindue. Den "lave" kode skyldes, at sproget er præcist og simpelt, hvilket gør det nemt for både oprettere og udviklere at udføre almindelige programmeringsopgaver.
Power Fx muliggør hele spektret af udvikling fra no-code makers uden nogen programmeringsviden til pro-kode for de professionelle udviklere. Det gør det muligt for forskellige teams at samarbejde og spare tid og kræfter.
Brug af Power Fx i skrivebordsflow
For at bruge Power Fx som et udtrykssprog i et skrivebordsflow, skal du oprette et skrivebordsflow og aktivere den respektive skifteknap, når du opretter flowet gennem Power Automate til desktops konsol.
Forskelle i aktiverede Power Fx-flows
Bemærk
Hvert Power Fx udtryk skal starte med et "=" (er lig med fortegn).
Hvis du skifter fra flows, hvor Power Fx er deaktiveret, vil du muligvis bemærke nogle forskelle. Hvis du vil strømline din oplevelse, mens du opretter nye skrivebordsflow, er her nogle nøglebegreber, du skal huske på:
På samme måde som Excel-formler bruger skrivebordsflows, der bruger Power Fx som deres udtrykssprog, 1 (én) baseret matrixindeksering i stedet for 0 (nul) baseret indeksering. Udtrykket
=Index(numbersArray, 1)
returnerer f.eks. det første element i matrixennumbersArray
.Variablenavne skelner mellem store og små bogstaver i desktop-flows med Power Fx. For eksempel NewVar er anderledes end newVar.
Når Power Fx er aktiveret i et skrivebordsflow, kræves variabelinitialisering før brug. Forsøg på at bruge en ikke-initialiseret variabel i Power Fx udtryk resulterer i en fejl.
Handlingen Hvis accepterer et enkelt betinget udtryk. Tidligere accepterede den flere operander.
Mens flows uden Power Fx aktiveret har udtrykket "Generel værdi" til at betegne en ukendt objekttype, drejer Power Fx sig om et strengt typesystem. I aktiverede Power Fx-flows skelnes der mellem dynamiske variabler (variabler, hvis type eller værdi kan ændres under kørsel) og dynamiske værdier (værdier, hvis type eller skema bestemmes under kørsel). Lad os se på følgende eksempel for bedre at forstå forskellen.
dynamicVariable
ændrer sin type under kørsel fra enNumeric
- til enBoolean
-værdi, mensdynamicValue
bestemmes under kørsel til at være et objekt uden type, hvor den faktiske type er etCustom object
:Følgende værdier behandles som dynamiske værdier:
- Datatabeller
- Brugerdefinerede objekter med ukendt skema
- Output af dynamiske handlinger (f.eks. handlingen "Kør .NET Script")
- Output fra handlingen Kør "skrivebordsflow"
- Ethvert handlingsoutput uden et foruddefineret skema (f.eks. "Læs fra Excel-regneark" eller "Opret ny liste")
Dynamiske værdier behandles på samme måde som Power Fx-objektet uden type og kræver normalt eksplicitte funktioner for at blive konverteret til den påkrævede type (f.eks.
Bool()
ogText()
). For at strømline din oplevelse sker der en implicit konvertering, når du bruger en dynamisk værdi som handlingsinput eller som en del af et Power Fx udtryk. Der er ingen validering under oprettelsen, men afhængigt af den faktiske værdi under kørsel opstår der en kørselsfejl, hvis konverteringen mislykkes.Når der bruges en dynamisk variabel, vises en advarselsmeddelelse med angivelse af "Forsinket type leveret". Disse advarsler opstår pga Power Fx's strenge krav til skemaer med stærke typer (strengt definerede typer). Dynamiske variabler er ikke tilladt på lister eller i tabeller eller som en egenskab for record-værdier.
Ved at kombinere handlingen Kør Power Fx-udtryk med udtryk vha. funktionerne Collect, Clear, ClearCollect og Patch kan du emulere den funktionsmåde, der findes i handlingerne Føj element til liste og Indsæt række i datatabellen, der tidligere ikke var tilgængelige for Power Fx-aktiverede skrivebordsflows. Mens begge handlinger stadig er tilgængelige, kan du bruge funktionen Collect, når du arbejder med lister med stærke typer (f.eks. en liste over filer). Denne funktion sikrer, at listen bevarer sin type, da listen konverteres til et objekt uden type, når man bruger handlingen Føj element til liste.
Eksempler
=1
er et inputfelt, som svarer til den numeriske værdi 1.= variableName
er lig med variableName-variablens værdi.- Udtrykket
= {'prop':"value"}
returnerer en postværdi, der svarer til et brugerdefineret objekt. - Udtrykket
= Table({'prop':"value"})
returnerer en Power Fx tabel, der svarer til en liste over brugerdefinerede objekter. - Udtrykket –
= [1,2,3,4]
opretter en liste over numeriske værdier. - For at få adgang til værdien fra en liste skal du bruge funktionen
Index(var, number)
, hvor var er navnet på listen, og tallet er placeringen af den værdi, der skal hentes. - Hvis du vil have adgang til en datatabelcelle ved hjælp af et kolonneindeks, skal du bruge funktionen
Index()
.=Index(Index(DataTableVar, 1), 2)
henter værdien fra cellen i række 1 i kolonne 2.=Index(DataRowVar, 1)
henter værdien fra cellen i række 1. - Hvis du vil medtage en interpoleret værdi i en input- eller en brugergrænseflade-/webelementvælger, skal du bruge følgende syntaks:
Text before ${variable / expression} text after
- Eksempel:
The total number is ${Sum(10, 20)}
- Eksempel:
Bemærk
Hvis du vil bruge dollartegnet ($
) efterfulgt af et kurvet klammeparentestegn ({
) i et Power Fx-udtryk eller i syntaksen for en brugergrænseflade/webelementvælger og Power Automate til skrivebord behandler det ikke som indskudt strengesyntaks, skal du sørge for at følge denne syntaks: $${
(det første dollartegn fungerer som et escape-tegn)
Tilgængelige Power Fx-funktioner
For den komplette liste over alle tilgængelige funktioner i Power Automate for desktop flows, gå til Formelreference - desktop-flows.
Kendte problemer og begrænsninger
- Følgende handlinger fra standardbiblioteket med automatiseringshandlinger understøttes ikke i øjeblikket:
- Switch
- Case
- Standardsag
- Nogle Power Fx-funktioner, der vises via IntelliComputer, understøttes i øjeblikket ikke i skrivebordsflow. Disse funktioner viser følgende designtidsfejl, når de bruges: "Parameter 'Value': PowerFx-type 'OptionSetValueType' understøttes ikke."
Nyheder
I dette afsnit kan du se, hvad der er ændret i de enkelte opdateringer.
2.48
I sept. 2024-udgivelsen:
- Genaktiver tidligere ikke-understøttede handlinger til manipulation af lister og datatabeller fra kategorien Variabler.
- Understøttelse af oprindelig objekt uden type til brugerdefinerede objekter, lister og datatabeller. Få mere at vide om objekt uden type på Objektdatatype uden type.
- Denne ændring blev indført for at reducere designtidsadvarsler og brugen af udskudte typer. Objekt uden type er en metode til at håndtere typer med ukendt skema på designtidspunktet.
- I tidligere versioner blev dynamiske variabler (variabler, hvis type eller værdi kan ændres under kørsel) og dynamiske værdier (værdier, hvis type eller skema bestemmes under kørsel), håndteret på samme måde. Når der blev brugt en dynamisk værdi eller en dynamisk variabel i et Power Fx-udtryk, blev der udløst en advarsel: "Udskudt type angivet." Disse advarsler opstod, fordi Power Fx håndhæver strenge typeskemaer (stærkt definerede datatyper). Fra og med denne version skelnede vi mellem disse to tilfælde. Mens dynamiske variabler fortsat genererer advarslen "udskudt type", behandles dynamiske værdier nu som objekter uden type.
- Alle datatabelvariabler er uden type, mens brugerdefinerede objekter, der er resultatet af handlingen Konverter JSON til et brugerdefineret objekt , er uden type. Lister vil blive uden type efter at have manipuleret dem med Power Automate til skrivebord-handlinger fra kategorien Variabler.
- Tidligere ville visse automatiseringshandlinger fra standardhandlingsbiblioteket, såsom Læs fra Excel, Læs fra CSV, Udtræk data fra en webside, Udtræk data fra vindue, Udfør SQL-sætning Konverter JSON til et brugerdefineret objekt , producere en dynamisk variabel sammen med en advarsel om "forsinket type". De opretter nu i stedet en datatabel uden type eller en brugerdefineret objektvariabel uden type.
- Indstil Power Fx-funktionen er nu aktiveret, men understøttes endnu ikke fuldt ud. Selvom den ikke kan bruges til at ændre en variabels værdi direkte, kan den bruges sammen med ovenstående strukturer til også at opdatere brugerdefinerede objektegenskaber og værdier for lister i bestemte indekser (f.eks.
=Set(Index(Index(DataTable, 1), 1), 42)
eller=Set(customObject.property, 17)
). - Løste et problem med adgang til indlejrede listeegenskaber for et objekt i Power Fx aktiverede flows.
Advarsel
I version 2.48 af Power Automate til skrivebord har der været opdateringer til Power Fx-aktiverede skrivebordsflows, der kan påvirke udførelsen af Power Fx-aktiverede flows, der er oprettet med tidligere versioner. Det anbefales, at du tester denne version grundigt med dine eksisterende Power Fx flows.
- Output fra underordnede flows: Vær forsigtig, når du bruger outputvariabler fra underordnede flows i et Power Fx-aktiveret skrivebordsflow . Dette omfatter outputvariabler af typer, liste, brugerdefineret objekt og datatabel.
- Matrix med en enkelt værdikolonne: En matrix, der er oprettet vha. et udtryk som f.eks.
=[1, 2, 3]
., resulterer i en enkeltværdi kolonne række i aktiverede Power Fx-flows, hvis elementer er objekter med en enkelt egenskab:{Value: 1}
. Forsøg på at få adgang tilValue
-egenskaben for dette element, efter at du har ændret den første array med en handling, resulterer i en forfatterfejl. - Power Fx-funktionsbrug: I visse Power Fx-funktioner, f.eks.
IsEmpty()
. accepterede tidligere versioner en dynamisk variabel som et argument og udløste ikke en valideringsfejl. I version 2.48 resulterer brug af en variabel, der håndteres som en dynamisk variabel, i en valideringsfejl og en fejl i kørsel af eksisterende flows. Løsningen på det er at anvende korrekt casting til den dynamiske (uden type) værdi. Få mere at vide om castingfunktioner i Datatype for objekt uden type. Du kan støde på dette problem, når du redigerer et flow, og du kan få vist en fejlmeddelelse som f.eks. "Invalid argument type (UntypedObject)". Forventer en tabelværdi i stedet." Du kan løse dette problem ved at følge fejlmeddelelserne for at konvertere udtrykket til et gyldigt udtryk.- Andre eksempler på funktioner, der kan udløse en valideringsfejl, når du bruger en kombination af dynamiske og typede variabler, er
Sum()
,Filter()
,Concatenate()
og operatorer somin
(f.eks."string" in DynamicValueObject
).
- Andre eksempler på funktioner, der kan udløse en valideringsfejl, når du bruger en kombination af dynamiske og typede variabler, er
- Variabelsammenligning: I lighed med det tidligere nævnte problem kan der være typeinkompatibilitet, når du anvender sammenligningsoperatorer (
=
,<>
,>
,<
osv.) på udtryk, der involverer dynamiske værdier. Vær forsigtig, og anvend den korrekte typekonvertering, før du sammenligner dynamiske værdier.
2.43
I udgivelsen fra april 2024:
- Forskel på store og små bogstaver. F.eks. er NewVar en anden variabel end newVar.
- Handlingen Kør Power Fx-udtryk er tilgængelig under gruppen Variabler af handlinger. Kør Power Fx-udtryk giver dig mulighed for at udføre udtryk direkte på datakilder.
- Collect, Clear, ClearCollect Power Fx-funktioner understøttes i skrivebordsflows.
- Patch Power Fx-funktioner understøttes i skrivebordsflows.
- Variabler og udtryk i Power Fx kan bruges i brugergrænsefladeelement eller webvælgersyntaksen.
- Interpolerede værdier kan nu inkluderes i syntaksen for en brugergrænseflade/webelementvælger. I forbindelse med interpolerede strenge kan du bruge denne syntaks: ${ Power Fx-udtryk }.
Vigtigt!
I version 2.43 af Power Automate til skrivebordet har der været opdateringer til det aktiverede skrivebordsflow i Power Fx, der kan påvirke udførelsen af Power Fx-aktiverede skrivebordsflowa, der er oprettet med tidligere versioner. Nærmere bestemt:
- Variable navne med forskel på store og små bogstaver: Variabelnavne i Power Fx-aktiverede skrivebordsflows, der er oprettet med Power Automate til skrivebord version 2.43 og nyere, er der forskel på store og små bogstaver. Power Fx skrivebordsflows, der er oprettet med Power Automate til skrivebordsversion 2.42 og tidligere er tilladt for variable navne med forskel på store og små bogstaver. F.eks. refererer NewVar og newVAR refererer til samme variabel. I Power Fx aktiverede skrivebordsflows, der er oprettet med Power Automate til skrivebord, version 2.42 og tidligere, skal du sørge for at gennemgå og kontrollere, at de oprettede variabler er som forventet.
2.42
I marts 2024-udgaven:
- IntelliSense-funktioner er nu tilgængelige for Power Fx-aktiverede skrivebordsflow.
- Syntaksfarvelægning
- Autofuldførelsesfunktionalitet under indtastning med forslag i realtid
- Signaturhjælpere til Power Fx-funktioner
Bemærk
IntelliSense-funktioner er tilgængelige for udtryk. Hvis du vil angive et udtryk, skal du bruge lighedstegn (= dit udtryk ) i starten af det pågældende input eller strengens interpoleringsnotation ( ${ dit udtryk } ).
- Funktionsvælger
- Du kan få adgang til funktionsvælgeren ved hjælp af fx-knappen, når du kommunikerer med de respektive input. Alle de Power Fx-funktioner, der i øjeblikket understøttes til skrivebordsflow, er tilgængelige der.
2.41
Udgivelse fra februar 2024:
- Fra nu af opfattes input, der ikke starter med lighedstegnet (=), som teksttypeværdier. Numeriske og booleske input skal altid starte med lighedstegnet.
- Input understøtter nu strenge, der understøttes. Hvis du vil medtage en interpoleret værdi i et input, skal du bruge følgende syntaks:
Text before ${variable/ expression} text after
.- Eksempel:
The total number is ${Sum(10, 20)}
- Eksempel:
Bemærk
Hvis du vil bruge en afbildet strengsyntaksen, skal du udelade lighedstegnet (=)i starten af inputtet.
2.39
I december 2023-versionen:
- Hvis inputtet ikke starter med lighedstegnet, gælder følgende regler:
- Numeriske værdier uden mellemrum fortolkes som numeriske værdier.
- Sand/falsk som input, uanset store og små bogstaver og uden mellemrum tolkes som booleske værdier,
- Alle andre input betragtes som teksttypeværdier.