Delen via


Power Fx in bureaubladstromen

Power Fx is de taal met weinig code die wordt gebruikt om logica uit te drukken in Microsoft Power Platform. Het is een algemene, sterk getypeerde, declaratieve en functionele programmeertaal.

Power Fx wordt uitgedrukt in gebruikersvriendelijke tekst. Het is een taal met weinig code waarmee makers direct kunnen werken in een Excel-achtige formulebalk of Visual Studio Code-tekstvenster. Low-code betreft de beknopte en eenvoudige aard (weinig code) van de taal, waardoor veelvoorkomende programmeertaken gemakkelijk zijn voor zowel makers als ontwikkelaars.

Power Fx maakt het volledige ontwikkelingsspectrum mogelijk, van makers zonder code zonder enige programmeerkennis tot pro-code voor professionele ontwikkelaars. Het stelt diverse teams in staat samen te werken en tijd en moeite te besparen.

Power Fx gebruiken in bureaubladstromen

Als u Power Fx als expressietaal in een bureaubladstroom wilt gebruiken, moet u een bureaubladstroom maken en de desbetreffende wisselknop inschakelen bij het maken van de stroom via de console van Power Automate voor bureaublad.

Schermopname van de knop Power Fx inschakelen

Verschillen in ingeschakelde Power Fx-workflows

Opmerking

Elke Power Fx-expressie moet beginnen met een "=" (gelijkteken).

Als u overstapt van stromen waarbij Power Fx is uitgeschakeld, merkt u mogelijk enkele verschillen. Om uw ervaring bij het maken van nieuwe bureaubladworkflows te stroomlijnen, zijn hier enkele belangrijke concepten om in gedachten te houden:

  • Op dezelfde manier als voor Excel-formules gebruiken desktopstromen die Power Fx als expressietaal gebruiken, 1 (één) gebaseerde matrixindexering in plaats van op 0 (nul) gebaseerde indexering. Expressie =Index(numbersArray, 1) retourneert bijvoorbeeld het eerste element van de numbersArray-matrix.

  • Namen van variabelen zijn hoofdlettergevoelig in bureaubladstromen met Power Fx. Zo is bijvoorbeeld NewVar anders dan newVar.

  • Wanneer Power Fx is ingeschakeld in een bureaubladstroom, is variabele-initialisatie vereist vóór gebruik. Wanneer u probeert een niet-geïnitialiseerde variabele te gebruiken in Power Fx-expressies, resulteert dit in een fout.

  • De If actie accepteert één voorwaardelijke expressie. Voorheen accepteerde het meerdere operanden.

  • Terwijl stromen zonder Power Fx ingeschakeld de term "Algemene waarde" hebben om een onbekend objecttype aan te duiden, draait Power Fx om een strikt typesysteem. In ingeschakelde Power Fx-stromen wordt onderscheid gemaakt tussen dynamische variabelen (variabelen waarvan het type of de waarde tijdens runtime kan worden gewijzigd) en dynamische waarden (waarden waarvan het type of schema tijdens runtime wordt bepaald). Om dit onderscheid beter te begrijpen, kunt u het volgende voorbeeld bekijken. De dynamicVariable verandert zijn type tijdens runtime van een Numeric naar een Boolean waarde, terwijl dynamicValue tijdens de runtime wordt bepaald als een niet-getypeerd object, met een feitelijk type dat een Custom object is:

    Schermopname van de instelling van een dynamische variabele en dynamische waarde.

  • Waarden die als dynamische waarden worden behandeld, zijn:

    • Gegevenstabellen
    • Aangepaste objecten met onbekend schema
    • Dynamische actie-uitvoer (bijvoorbeeld de actie 'Run .NET Script')
    • Uitvoer van de actie 'Bureaubladstroom uitvoeren'
    • Elke actie-uitvoer zonder een vooraf gedefinieerd schema (bijvoorbeeld 'Lezen van Excel-werkblad' of 'Nieuwe lijst maken')
  • Dynamische waarden worden op dezelfde manier behandeld als Niet-getypeerd Power Fx-object en vereisen normaal gesproken dat expliciete functies worden omgezet naar het vereiste type (bijvoorbeeld Bool() en Text()). Om uw ervaring te stroomlijnen, vindt er impliciete conversie plaats wanneer u een dynamische waarde gebruikt als actie-invoer of als onderdeel van een Power Fx-expressie. Er vindt geen validatie plaats tijdens het maken, maar afhankelijk van de werkelijke waarde tijdens runtime treedt er een runtime-fout op als de conversie mislukt.

  • Wanneer een dynamische variabele wordt gebruikt, wordt er een waarschuwingsbericht weergegeven met de tekst 'Uitgesteld type geleverd'. Deze waarschuwingen ontstaan als gevolg van de strikte vereiste in Power Fx voor sterk getypeerde schema's (strikt gedefinieerde typen). Dynamische variabelen zijn niet toegestaan in lijsten, tabellen of als eigenschap voor recordwaarden.

  • Door de actie Power Fx-expressie uitvoeren te combineren met expressies die gebruikmaken van de functies Collect, Clear, ClearCollect en Patch kunt u het gedrag van de acties Item aan lijst toevoegen en Rij invoegen in gegevenstabel emuleren die voorheen niet beschikbaar zijn voor ingeschakelde Power Fx-bureaubladstromen. Hoewel beide acties nog steeds beschikbaar zijn, kunt u de functie Verzamelen gebruiken wanneer u met sterk getypeerde lijsten werkt (bijvoorbeeld een lijst met bestanden). Met deze functie zorgt u ervoor dat de lijst getypt blijft, omdat de actie Item aan lijst toevoegen de lijst omzet in een niet-getypeerd object.

Voorbeelden

  • De =1 in een invoerveld is gelijk aan de numerieke waarde 1.
  • De = variableName is gelijk aan de waarde van de variableName. 
  • De expressie = {'prop':"value"} retourneert een recordwaarde die equivalent is aan een aangepast object.
  • De expressie = Table({'prop':"value"}) retourneert een Power Fx-tabel die equivalent is aan een lijst met aangepaste objecten. 
  • De expressie - = [1,2,3,4] creëert een lijst met numerieke waarden.
  • Om de waarde uit een lijst te benaderen, gebruikt u de functie Index(var, number), waarbij var de naam van de lijst is en number de positie van de waarde die moet worden opgehaald.
  • Gebruik de functie Index() om toegang te krijgen tot een cel in een gegevenstabel met behulp van een kolomindex. =Index(Index(DataTableVar, 1), 2) haalt de waarde op uit de cel in rij 1 binnen kolom 2. =Index(DataRowVar, 1) haalt de waarde op uit de cel in rij 1.
  • Om een geïnterpoleerde waarde in een invoer of een UI/webelementselector op te nemen, gebruikt u de volgende syntaxis: Text before ${variable / expression} text after
    • Voorbeeld: The total number is ${Sum(10, 20)}

Opmerking

Als u het dollarteken ($) wilt gebruiken, gevolgd door een accolade-openingsteken ({) binnen een Power Fx-expressie of in de syntaxis van een UI/Web-elementselector en Power Automate voor bureaublad moet u dit niet behandelen als de syntaxis van de tekenreeksinterpolatie. Zorg ervoor dat u deze syntaxis volgt: $${ (het eerste dollarteken fungeert als een ontsnappingskarakter)

Beschikbare Power Fx-functies

Voor de volledige lijst van alle beschikbare functies in Power Automate voor bureaubladstromen gaat u naar Formuleverwijzing - bureaubladstromen.

Bekende problemen en beperkingen

  • De volgende acties uit de standaardlibrary met automatiseringsacties worden momenteel niet ondersteund:
    • Switch
    • Hoofdlettergebruik
    • Standaardaanvraag
  • Sommige Power Fx-functies die via IntelliSense worden gepresenteerd, worden momenteel niet ondersteund in bureaubladstromen. Deze functies geven de volgende ontwerpfout weer wanneer ze worden gebruikt: "Parameter 'Waarde': PowerFx-type 'OptionSetValueType' wordt niet ondersteund."

Wat is er nieuw

In deze sectie wordt vermeld wat er in elke update is gewijzigd.

2.48

In de release van september 2024:

  • Schakel niet eerder ondersteunde bewerkingsacties voor lijsten en gegevenstabellen opnieuw in vanuit de categorie Variabelen .
  • Ondersteuning voor native niet-getypeerde objecten voor aangepaste objecten, lijsten en gegevenstabellen. Meer informatie over niet-getypeerde objecten vindt u in Gegevenstype niet-getypeerd object.
    • Deze wijziging is doorgevoerd om de waarschuwingen tijdens de ontwerptijd en het gebruik van uitgestelde typen te verminderen. Een niet-getypeerd object is een manier om typen met een onbekend schema te verwerken tijdens het ontwerpen.
    • In eerdere versies werden dynamische variabelen (variabelen waarvan het type of de waarde tijdens runtime kan worden gewijzigd) en dynamische waarden (waarden waarvan het type of schema tijdens runtime wordt bepaald) op dezelfde manier verwerkt. Wanneer een dynamische waarde of een dynamische variabele werd gebruikt in een Power Fx-expressie, werd een waarschuwing geactiveerd: 'Uitgesteld type opgegeven'. Deze waarschuwingen werden geactiveerd omdat Power Fx strikte typeschema's (streng gedefinieerde typen) afdwingt. Vanaf deze versie hebben we onderscheid gemaakt tussen deze twee gevallen. Dynamische variabelen blijven de waarschuwing 'uitgesteld type' genereren, maar dynamische waarden worden nu behandeld als niet-getypeerde objecten.
    • Alle variabelen in de gegevenstabel zijn niet-getypeerd, terwijl aangepaste objecten die het resultaat zijn van de actie JSON naar een aangepast object converteren niet-getypeerd zijn. Lijsten worden niet-getypeerd nadat u ze hebt bewerkt met Power Automate voor bureaublad-acties uit de categorie Variabelen .
    • Voorheen produceerden bepaalde automatiseringsacties uit de standaardbibliotheek met acties, zoals Lezen van Excel, Lezen van CSV, Gegevens uit een website extraheren, Gegevens uit een venster extraheren, SQL-instructie uitvoeren en JSON converteren naar een aangepast object een dynamische variabele, samen met een waarschuwing over het 'uitgestelde type'. Ze produceren nu in plaats daarvan een niet-getypeerde gegevenstabel of een niet-getypeerde aangepaste objectvariabele.
  • De Set Power Fx-functie is nu ingeschakeld, maar wordt nog niet volledig ondersteund. Hoewel het niet kan worden gebruikt om de waarde van een variabele rechtstreeks te wijzigen, kan het met de bovenstaande structuren ook worden gebruikt om aangepaste objecteigenschappen en waarden van lijsten in specifieke indexen bij te werken (bijvoorbeeld =Set(Index(Index(DataTable, 1), 1), 42) of =Set(customObject.property, 17)).
  • Er is een probleem opgelost met de toegang tot geneste lijsteigenschappen van een object in Power Fx ingeschakelde stromen.

Let op

In versie 2.48 van Power Automate voor bureaublad zijn er updates voor ingeschakelde Power Fx-bureaubladstromen die van invloed kunnen zijn op de uitvoering van ingeschakelde Power Fx-bureaubladstromen die met eerdere versies zijn gemaakt. Het is raadzaam om deze versie grondig te testen met uw bestaande Power Fx-stromen.

  • Uitvoer van onderliggende stromen: wees voorzichtig bij het gebruik van uitvoervariabelen van onderliggende stromen in een geactiveerde Power Fx-bureaubladstroom. Dit omvat uitvoervariabelen van de typen lijst, aangepast object en gegevenstabel.
  • Matrices met één kolomwaarde: een matrix die is gemaakt met behulp van een expressie zoals =[1, 2, 3] resulteert in een matrix met één kolomwaarde in geactiveerde Power Fx-stromen, waarvan de items objecten zijn met één eigenschap: {Value: 1}. Als u probeert toegang te krijgen tot de Value-eigenschap van dit item, nadat u de eerste matrix met een actie hebt gewijzigd, resulteert dit in een ontwerpfout.
  • Power Fx-functiegebruik: In bepaalde Power Fx-functies, zoals IsEmpty(), accepteerden eerdere versies een dynamische variabele als argument en werd er geen validatiefout gegenereerd. Bij versie 2.48 resulteert het gebruik van een variabele die als een dynamische variabele wordt behandeld in een validatiefout en in het mislukken van de uitvoering van bestaande stromen. De oplossing hiervoor is om de juiste casting toe te passen op de dynamische (niet-getypeerde) waarde. Meer informatie over het casten van functies in het Niet-getypeerd object. U kunt dit probleem tegenkomen bij het bewerken van een stroom en een foutmelding krijgen zoals "Ongeldig argumenttype (UntypedObject). Er wordt in plaats daarvan een tabelwaarde verwacht." Om dit probleem op te lossen, volgt u de foutmeldingen om uw expressie om te zetten in een geldige expressie.
    • Andere voorbeelden van functies die een validatiefout kunnen opleveren bij het gebruik van een combinatie van dynamische en getypte variabelen zijn Sum(), Filter(), Concatenate() en operatoren als in (bijvoorbeeld "string" in DynamicValueObject).
  • Vergelijking van variabelen: vergelijkbaar met het eerder genoemde probleem kunnen er type-incompatibiliteiten optreden wanneer u vergelijkingsoperatoren (=, <>, >, < enz.) toepast op expressies met dynamische waarden. Wees voorzichtig en pas de juiste casting toe voordat u dynamische waarden vergelijkt.

2.43

In de release van april 2024:

  • Hoofdlettergevoelig. NewVar is bijvoorbeeld een andere variabele dan newVar.
  • De actie Power Fx-expressie uitvoeren is beschikbaar onder de groepacties Variabelen. Met Power Fx-expressie uitvoeren kunt u expressies rechtstreeks op gegevensbronnen uitvoeren.
  • De Collect, Clear en ClearCollect-functies van Power Fx worden ondersteund in bureaubladstromen.
  • Patch Power Fx-functies worden ondersteund in bureaubladstromen.
  • Variabelen en Power Fx-expressies kunnen worden gebruikt in de syntaxis van UI-elementen of webselectors.
  • Geïnterpoleerde waarden kunnen nu worden opgenomen in de syntaxis van een UI/webelementselector. Voor geïnterpoleerde tekenreeksen kunt u deze syntaxis gebruiken: ${ Power Fx-expressie }.

Belangrijk

In versie 2.43 van Power Automate voor bureaublad zijn er updates voor Power Fx ingeschakelde desktopstromen die van invloed kunnen zijn op de uitvoering van Power Fx ingeschakelde bureaubladstromen die met eerdere versies zijn gemaakt. Specifiek:

  • Hoofdlettergevoelige namen van variabelen: namen van variabelen binnen Power Fx ingeschakelde bureaubladstromen die zijn gemaakt met Power Automate voor buraublad versie 2.43 en hoger zijn hoofdlettergevoelig. Power Fx-bureaubladstromen die zijn gemaakt met Power Automate voor bureaublad versie 2.42 en eerder staan ​​hoofdletterongevoelige namen van variabelen toe. NewVar en newVAR verwijzen bijvoorbeeld naar dezelfde variabele. Voor Power Fx ingeschakelde bureaubladstromen die zijn gemaakt met Power Automate voor bureaublad 2.42 en eerder dient u te controleren en verifiëren dat de geproduceerde variabelen zijn zoals verwacht.

2.42

In de release van maart 2024:

  • IntelliSense-mogelijkheden zijn nu beschikbaar voor Power Fx-compatibele bureaubladstromen.
    • Inkleuring van syntaxis
    • Functionaliteit voor automatisch aanvullen tijdens het typen met realtime suggesties
    • Hulpmiddelen voor handtekeningen voor Power Fx-functies

Opmerking

Er zijn IntelliSense-mogelijkheden beschikbaar voor expressies. Om een expressie in te voeren, gebruikt u het is gelijk aan-teken (= uw expressie ) aan het begin van de betreffende invoer of de interpolatienotatie voor de tekenreeks ( ${ uw expressie } ).

  • Functiekiezer
    • U kunt de functiekiezer openen met behulp van de fx-knop in de kegel tijdens interactie met de respectieve ingangen. Alle Power Fx-functies die momenteel worden ondersteund voor bureaubladstromen zijn daar beschikbaar.

2.41

In de release van februari 2024:

  • Vanaf nu worden invoergegevens die niet beginnen met het gelijkteken (=) beschouwd als teksttypewaarden. Numerieke en booleaanse invoer moet altijd beginnen met het gelijkteken.
  • Invoer ondersteunt nu geïnterpoleerde strings. Om een geïnterpoleerde waarde in een invoer op te nemen, gebruikt u de volgende syntaxis: Text before ${variable/ expression} text after.
    • Voorbeeld: The total number is ${Sum(10, 20)}

Opmerking

Als u de geïnterpoleerde tekenreekssyntaxis wilt gebruiken, laat u het gelijkteken aan het begin van de invoer weg.

2.39

In de release van december 2023:

  • Als de verstrekte invoer niet begint met het gelijkteken, gelden de volgende regels:
    • Numerieke waarden zonder spaties worden geïnterpreteerd als numerieke waarden.
    • Waar/Onwaar als invoer, ongeacht hoofdlettergebruik en zonder spaties, worden geïnterpreteerd als booleaanse waarden.
    • Alle andere invoer wordt als teksttypewaarden beschouwd.