Condividi tramite


Power Fx in flussi desktop

Power Fx è il linguaggio con poco codice per esprimere la logica in Microsoft Power Platform. È un linguaggio di programmazione per utilizzo generico, fortemente tipizzato, dichiarativo e funzionale.

Power Fx è espresso in un testo di facile utilizzo. È un linguaggio a uso limitato di codice con cui i creatori possono lavorare direttamente in una barra della formula simile a Excel o una finestra di testo di Visual Studio Code. L'uso limitato di codice è garantito dalla natura concisa e semplice del linguaggio, che semplifica le attività di programmazione comuni sia per i creatori che per gli sviluppatori.

Power Fx consente l'intero spettro di sviluppo, dai produttori senza codice senza alcuna conoscenza di programmazione alla codifica professionale per gli sviluppatori professionisti. Consente a team diversi di collaborare e risparmiare tempo e fatica.

Utilizzo di Power Fx nel flusso desktop

Per utilizzare Power Fx come linguaggio di espressione in un flusso desktop, devi creare un flusso desktop e abilitare il rispettivo pulsante di attivazione/disattivazione durante la creazione del flusso tramite la console di Power Automate per desktop.

Screenshot del pulsante Abilita Power Fx

Differenze nei flussi abilitati Power Fx

Nota

Ogni espressione Power Fx deve iniziare con "=" (segno di uguale).

Se stai passando da flussi in cui Power Fx è disabilitato, potresti notare alcune differenze. Per semplificare la tua esperienza durante la creazione di nuovi flussi desktop, ecco alcuni concetti chiave da tenere a mente:

  • Allo stesso modo delle formule di Excel, i flussi desktop che utilizzano Power Fx come linguaggio di espressione utilizzano l'indicizzazione di array basata su 1 (uno) anziché su 0 (zero). Ad esempio, l'espressione =Index(numbersArray, 1) restituisce il primo elemento dell'array numbersArray.

  • I nomi delle variabili fanno distinzione tra maiuscole e minuscole nei flussi desktop con Power Fx. Ad esempio, NewVar è diverso da newVar.

  • Quando Power Fx è abilitato in un flusso desktop, è richiesta l'inizializzazione della variabile prima dell'uso. Il tentativo di utilizzare una variabile non inizializzata in espressioni Power Fx genera un errore.

  • L'azione If accetta una singola espressione condizionale. In precedenza, accettava più operandi.

  • Mentre i flussi senza Power Fx abilitato hanno il termine "Valore generale" per indicare un tipo di oggetto sconosciuto, Power Fx ruota attorno a un sistema di tipi rigoroso. Nei flussi abilitati per Power Fx, esiste una distinzione tra variabili dinamiche (variabili il cui tipo o valore può essere modificato durante l'esecuzione) e valori dinamici (valori il cui tipo o schema è determinato durante l'esecuzione). Per comprendere meglio questa distinzione, considerare l'esempio seguente. dynamicVariable cambia il suo tipo durante l'esecuzione da un valore Numeric a un valore Boolean, mentre dynamicValue viene determinato durante l'esecuzione come un oggetto non tipizzato, con il suo tipo effettivo che è Custom object:

    Screenshot che mostra l'impostazione di una variabile dinamica e di un valore dinamico.

  • I valori trattati come valori dinamici sono:

    • Tabelle dati
    • Oggetti personalizzati con schema sconosciuto
    • Output di azioni dinamiche (ad esempio, l'azione "Esegui script .NET")
    • Output dall'azione "Esegui flusso desktop"
    • Qualsiasi output di azione senza uno schema predefinito (ad esempio, "Leggi dal foglio di lavoro Excel" o "Crea nuovo elenco")
  • I valori dinamici vengono trattati in modo simile all'oggetto non tipizzato Power Fx e normalmente richiedono funzioni esplicite per essere convertiti nel tipo richiesto (ad esempio, Bool() e Text()). Per semplificare la tua esperienza, si verifica una conversione implicita quando si utilizza un valore dinamico come input di azione o come parte di un'espressione Power Fx Non c'è alcuna convalida durante la creazione, ma a seconda del valore effettivo durante l'esecuzione, si verifica un errore di esecuzione se la conversione fallisce.

  • Ogni volta che viene utilizzata una variabile dinamica, viene visualizzato un messaggio di avviso che indica "Tipo differito fornito". Questi avvisi sono dovuti al requisito rigoroso di Power Fx per gli schemi fortemente tipizzato (tipi rigorosamente definiti). Le variabili dinamiche non sono consentite in elenchi, tabelle o come proprietà per i valori Registra.

  • Combinando l'azione Esegui espressione Power Fx con le espressioni che utilizzano le funzioni Raccogli, Cancella, ClearCollect e Patch puoi emulare il comportamento trovato nelle azioni Aggiungi elemento all'elenco e Inserisci riga nella tabella dati che erano precedentemente non disponibili per i flussi desktop Power Fx abilitati. Sebbene entrambe le azioni siano ancora disponibili, usa la funzione Collect quando si lavora con elenchi fortemente tipizzati (ad esempio, un elenco di file). Questa funzione garantisce che l'elenco rimanga tipizzato, poiché l'utilizzo dell'azione Aggiungi elemento all'elenco converte l'elenco in un oggetto non tipizzato.

Esempi

  • =1 in un campo di input equivale al valore numerico 1.
  • = variableName è uguale al valore della variabile variableName. 
  • L'espressione = {'prop':"value"} restituisce un valore per il record equivalente a un oggetto personalizzato.
  • L'espressione = Table({'prop':"value"}) restituisce una tabella Power Fx che equivale a un elenco di oggetti personalizzati. 
  • L'espressione = [1,2,3,4] crea un elenco di valori numerici.
  • Per accedere al valore di un Elenco, utilizza la funzione Index(var, number), dove var è il nome della Lista e number è la posizione del valore da recuperare.
  • Per accedere a una cella della tabella dati utilizzando un indice di colonna, utilizza la funzione Index(). =Index(Index(DataTableVar, 1), 2) recupera il valore dalla cella nella riga 1 all'interno della colonna 2. =Index(DataRowVar, 1) recupera il valore dalla cella nella riga 1.
  • Per includere un valore interpolato in un input o in un selettore di elementi UI/Web, utilizza la seguente sintassi: Text before ${variable / expression} text after
    • Esempio: The total number is ${Sum(10, 20)}

Nota

Se desideri utilizzare il simbolo del dollaro ($) seguito da una parentesi graffa di apertura ({) all'interno di un'espressione Power Fx o nella sintassi di un selettore di elementi UI/Web e hai Power Automate per desktop che non lo gestisce come sintassi di interpolazione di stringhe, assicurati di seguire questa sintassi: $${ (il primo simbolo del dollaro fungerà da carattere di fuga)

Funzioni Power Fx disponibili

Per l'elenco completo di tutte le funzioni disponibili in Power Automate per i flussi desktop, vai a Informazioni di riferimento sulla formule: flussi desktop.

Problemi noti e limitazioni

  • Le seguenti azioni dalla libreria standard di azioni di automazione non sono attualmente supportate:
    • Switch
    • Case
    • Caso predefinito
  • Alcune funzioni Power Fx presentate tramite IntelliSense non sono attualmente supportate nei flussi desktop. Quando vengono utilizzate, queste funzioni visualizzano il seguente errore in fase di progettazione: "Parametro 'Valore': il tipo PowerFx 'OptionSetValueType' non è supportato".

Novità

Questa sezione elenca le modifiche apportate in ciascun aggiornamento.

2.48

Nella versione di settembre 2024:

  • Riattiva le azioni di manipolazione di elenchi e tabelle dati precedentemente non supportate dalla categoria Variabili.
  • Supporto nativo per oggetti non tipizzati, per oggetti personalizzati, elenchi e tabelle dati. Per ulteriori informazioni sugli oggetti non tipizzati, consulta la pagina tipo di dati degli oggetti non tipizzati.
    • Questa modifica è stata introdotta per ridurre gli avvisi in fase di progettazione e l'utilizzo di tipi differiti. Oggetto non tipizzato è un modo per gestire i tipi con schema sconosciuto in fase di progettazione.
    • Nelle versioni precedenti, le variabili dinamiche (variabili il cui tipo o valore può essere modificato durante l'esecuzione) e valori dinamici (valori il cui tipo o schema è determinato durante l'esecuzione) erano gestite alla stessa maniera. Quando un valore dinamico o una variabile dinamica venivano utilizzati in un'espressione Power Fx, veniva visualizzato un avviso: "Fornito tipo posticipato". Questi avvisi si verificavano perché Power Fx impone schemi di tipo rigorosi (tipi fortemente definiti). A partire da questa versione abbiamo distinto i due casi. Mentre le variabili dinamiche continuano a generare l'avviso "tipo differito", i valori dinamici vengono ora trattati come oggetti non tipizzati.
    • Tutte le variabili della tabella dati non sono tipizzate, mentre gli oggetti personalizzati risultanti dall'azione non sono tipizzati Converti JSON in un oggetto personalizzato. Gli elenchi diventeranno non tipizzati dopo essere stati manipolati con azioni Power Automate per desktop dalla categoria Variabili.
    • In precedenza, alcune azioni di automazione della raccolta standard di azioni, come Leggi da Excel, Leggi da CSV, Estrai i dati da un sito Web, Estrai i dati da una finestra, Esegui comando SQL e Converti JSON in un oggetto personalizzato, producevano una variabile dinamica, insieme a un avviso di "tipo posticipato". Ora producono una tabella dati non tipizzata o una variabile oggetto personalizzata non tipizzata.
  • La funzione Set di Power Fx è ora abilitata ma non è ancora completamente supportata. Sebbene non possa essere utilizzata per modificare direttamente il valore di una variabile, può essere utilizzata con le strutture di cui sopra anche per aggiornare le proprietà degli oggetti personalizzati e i valori degli elenchi in indici specifici (ad esempio, =Set(Index(Index(DataTable, 1), 1), 42) o =Set(customObject.property, 17)).
  • Risolto un problema con l'accesso alle proprietà dell'elenco nidificato di un oggetto nei flussi abilitati di Power Fx.

Attenzione

Nella versione 2.48 di Power Automate per desktop, sono stati apportati aggiornamenti per i flussi desktop Power Fx abilitati che potrebbero influire sull'esecuzione dei flussi Power Fx abilitati creati con le versioni precedenti. Si consiglia di testare attentamente questa versione con i flussi Power Fx esistenti.

  • Output del flusso figlio: presta attenzione quando si utilizzano variabili di output dai flussi figlio in un flusso desktop Power Fx abilitato. Ciò riguarda variabili di output di tipo elenco, oggetto personalizzato e tabella dati.
  • Array di colonne a valore singolo: un array creato utilizzando un'espressione come =[1, 2, 3] produce un array di colonne a valore singolo nei flussi abilitati Power Fx, i cui elementi sono oggetti con una singola proprietà: {Value: 1}. Il tentativo di accedere alla proprietà Value di questo elemento, dopo aver modificato il primo array con un'azione, genera un errore di creazione.
  • Uso delle funzioni di Power Fx: in alcune funzioni Power Fx, come IsEmpty(), le versioni precedenti accettavano una variabile dinamica come argomento e non generavano un errore di convalida. Con la versione 2.48, l'utilizzo di una variabile gestita come variabile dinamica genera un errore di convalida e l'impossibilità di eseguire i flussi esistenti. La soluzione a questo problema è applicare il cast appropriato al valore dinamico (non tipizzato). Ulteriori informazioni su funzioni di casting nel Tipo di dati dell'oggetto non tipizzato. Potresti riscontrare questo problema quando modifichi un flusso e ricevi un messaggio di errore come "Tipo di argomento non valido (UntypedObject). Ci si aspetta un valore di tabella." Per risolvere questo problema, rispetta i messaggi di errore per convertire l'espressione in una valida.
    • Altri esempi di funzioni che potrebbero generare un errore di convalida quando si utilizza una combinazione di variabili dinamiche e tipizzate sono Sum(), Filter(), Concatenate() e operatori come in (ad esempio, "string" in DynamicValueObject).
  • Confronto di variabili: analogamente al problema menzionato in precedenza, potrebbero verificarsi incompatibilità di tipo quando si applicano operatori di confronto (=, <>, >, < ecc.) su espressioni che coinvolgono valori dinamici. Presta attenzione e applica il casting corretto prima di confrontare i valori dinamici.

2.43

Nella versione di aprile 2024:

  • Maiuscole/minuscole. Ad esempio, NewVar è una variabile diversa da newVar.
  • L'azione Esegui espressione Power Fx è disponibile nel gruppo di azioni Variabili. Esegui espressione Power Fx ti consente di eseguire espressioni direttamente sulle origini dati.
  • Le funzioni Power Fx Raccogli, Cancella, ClearCollect sono supportate nei flussi desktop.
  • Le funzioni di Power Fx Patch sono supportate nei flussi desktop.
  • Le variabili e le espressioni Power Fx possono essere utilizzate nella sintassi degli elementi dell'interfaccia utente o del selettore Web.
  • I valori interpolati possono ora essere inclusi nella sintassi di un selettore di elementi UI/Web. Per le stringhe interpolate, puoi utilizzare questa sintassi: ${ espressione Power Fx}.

Importante

Nella versione 2.43 di Power Automate per desktop, sono stati apportati aggiornamenti per i flussi desktop Power Fx abilitati che potrebbero influire sull'esecuzione dei flussi desktop Power Fx abilitati creati con le versioni precedenti. In particolare:

  • Nomi delle variabili con distinzione tra maiuscole e minuscole: i nomi delle variabili all'interno dei flussi desktop Power Fx abilitati creati con Power Automate per desktop versione 2.43 e successive fanno distinzione tra maiuscole e minuscole. I flussi desktop Power Fx creati con Power Automate per desktop versione 2.42 e precedenti consentivano nomi di variabili senza distinzione tra maiuscole e minuscole. Ad esempio, NewVAR e newVAR fanno riferimento alla stessa variabile. Per i flussi desktop Power Fx abilitati creati con Power Automate per desktop versione 2.42 e precedenti, assicurati di rivedere e verificare che le variabili prodotte siano quelle previste.

2.42

Nella versione di marzo 2024:

  • Le funzionalità IntelliSense sono ora disponibili per i flussi desktop Power Fx abilitati.
    • Colorazione della sintassi
    • Funzionalità di completamento automatico durante la digitazione con suggerimenti in tempo reale
    • Helper di firma per funzioni Power Fx

Nota

Le funzionalità IntelliSense sono disponibili per le espressioni. Per inserire un'espressione usa il segno uguale (= la tua espressione ) all'inizio del rispettivo input o la notazione di interpolazione di stringhe (${ la tua espressione }).

  • Selettore funzioni
    • Puoi accedere al selettore di funzioni utilizzando il pulsante fx nella visualizzazione quando interagisci con i rispettivi input. Qui sono disponibili tutte le funzioni Power Fx attualmente supportate per i flussi desktop.

2.41

Nella versione di febbraio 2024:

  • D'ora in poi gli input che non iniziano con il segno uguale (=) vengono considerati valori di tipo testo. Gli input numerici e booleani devono sempre iniziare con il segno uguale.
  • Gli input ora supportano le stringhe interpolate. Per includere un valore interpolato in un input, rispetta la seguente sintassi: Text before ${variable/ expression} text after.
    • Esempio: The total number is ${Sum(10, 20)}

Nota

Per utilizzare la sintassi della stringa interpolata, omettere il segno di uguale (=) all'inizio dell'input.

2.39

Nella versione di dicembre 2023:

  • Se l'input fornito non inizia con il segno uguale, si applicano le seguenti regole:
    • I valori numerici senza spazi vengono interpretati come valori numerici.
    • True/False come input, indipendentemente dal caso e senza spazi vengono interpretati come valori booleani.
    • Tutti gli altri input sono considerati valori di tipo testo.