桌面流程中的 Power Fx
Power Fx 是用於在 Microsoft Power Platform 上表達邏輯的低程式碼語言。 這是一種通用、強型別、聲明性和函數式程式設計語言。
Power Fx 會以人性化的文字表示。 這是一種低程式碼語言,製作者可以直接在類似 Excel 的公式列或 Visual Studio Code 文字視窗中使用。 低階代碼中的「低階」是由於該語言的簡潔性和簡單性,使得製造商和開發人員都可以輕鬆執行常見的編程任務。
Power Fx 支援從沒有任何程式設計知識的無程式碼開發人員到專業開發人員的專業程式碼的全方位開發。 它使不同的團隊能夠共同作業並節省時間和精力。
在桌面流程中使用 Power Fx
若要將 Power Fx 用作桌面流程中的運算式語言,您必須建立桌面流程,並在透過桌面控制台的 Power Automate 建立流程時啟用對應的切換按鈕。
Power Fx 啟用流程的差異
注意
每個 Power Fx 運算式必須以「=」(等於符號) 開頭。
如果您從停用的地方 Power Fx 流程轉換,則可能會注意到一些差異。 為了在建立新的桌面流程時簡化您的體驗,請記住以下一些重要概念:
與 Excel 公式相同,使用 Power Fx 作為運算式語言的桌面流程使用基於 1 (一) 的陣列索引,而不是基於 0 (零) 的索引。 例如,運算式
=Index(numbersArray, 1)
返回numbersArray
陣列的第一個元素。Power Fx 桌面流程中的變數名稱區分大小寫。 例如,NewVar 與 newVar 不同。
在 Power Fx 桌面流程中啟用時,在使用前需要進行變數初始化。 嘗試在 Power Fx 運算式中使用未初始化的變數會導致錯誤。
If 操作接受單個條件運算式。 先前接受多個運算元。
雖然 Power Fx 未啟用的流程具有術語「常規值」來表示未知物件類型,但 Power Fx 圍繞嚴格的類型系統。 在啟用 Power Fx 的流程中,動態變數 (類型或值可以在執行時間變更的變數) 和動態值 (類型或架構為在執行時確定)。 為了更好地理解這種區別,請考慮以下範例。 在執行時,
dynamicVariable
將其類型從Numeric
變更為Boolean
值,而dynamicValue
在執行時被確定為非類型化物件,其實際類型為Custom object
:被視為動態值的值有:
- 資料表
- 具有未知架構的自訂對象
- 動態操作輸出 (例如,「執行 .NET 指令碼」操作)
- 「執行桌面流程」動作的輸出
- 沒有任何預先定義結構描述的動作輸出 (例如,「從 Excel 工作表讀取」或「建立新清單」)
動態值的處理方式與非類型化物件 Power Fx 類似,通常需要將顯式函數轉換為所需的類型 (例如,
Bool()
和Text()
)。 為了簡化您的體驗,在使用動態值作為動作輸入或 Power Fx 運算式的一部分時會進行隱式轉換。 製作期間沒有驗證,但根據執行時的實際值,如果轉換失敗,則會發生執行時錯誤。每當使用動態變數時,都會顯示警告訊息,指出「提供了延遲類型」。 這些警告的出現是由於 Power Fx對強型別結構描述 (嚴格定義的型別) 的嚴格要求。 動態變數不允許出現在清單、表格中,也不允許作為記錄值的屬性。
透過將執行 Power Fx 運算式動作與使用 Collect、Clear、ClearCollect 和 Patch 函式的運算式結合,您可以模擬將項目新增至清單和將列插入資料表動作中的行為,這些動作目前不適用於已啟用 Power Fx 的桌面流程。 雖然這兩個操作仍然可用,但在處理強類型清單 (例如文件清單) 時請使用 Collect 函式。 此函式可確保清單保持類型化,因為使用「將項目新增至清單」操作會將清單轉換為非類型化物件。
範例
- 輸入欄位中的
=1
相當於數值 1。 - 等於變數名稱變數的值
= variableName
。 = {'prop':"value"}
運算式會傳回相當於自訂物件的記錄值。= Table({'prop':"value"})
運算式會傳回一個相當於自訂物件清單的 Power Fx 表。- 運算式 -
= [1,2,3,4]
= [1,2,3,4] 建立數值清單 - 若要從 List 存取值,使用
Index(var, number)
函數,其中 var 是 List 的名稱,number 是要擷取的值的位置。 - 若要使用資料行索引存取資料表儲存格,請使用
Index()
函式。=Index(Index(DataTableVar, 1), 2)
從第 2 行中第 1 行的儲存格中擷取值。=Index(DataRowVar, 1)
會從第 1 列的儲存格中擷取值。 - 若要在輸入或 UI/Web 元素選擇器中包含內插值,請使用下列語法:
Text before ${variable / expression} text after
- 範例:
The total number is ${Sum(10, 20)}
- 範例:
注意
如果您想在 Power Fx 運算式中或 UI/Web 元素選擇器的語法中使用美元符號({
) 後面跟著左大括號符號 ($
),並且讓電腦版 Power Automate 不將其視為字串差補值語法,請確保遵循以下語法:$${
(第一個美元符號將充當逸出字元)
可用的 Power Fx 函數
有關 Power Automate 桌面流程中所有可用函數的完整清單,請前往 公式參考 - 桌面流程。
已知問題與限制
- 目前不支援自動化動作標準庫中的以下動作:
- Switch
- 大小寫
- 預設案例
- 目前,桌面流程不支援透過 IntelliSense 提供的某些 Power Fx 功能。 這些函數在使用時會顯示以下設計時錯誤:「參數 "Value": 不支持 PowerFx 類型 "OptionSetValueType"」。
新增功能
本節列出了每次更新中的變更內容。
2.48
2024 年 9 月發布:
- 從變數類別重新啟用先前不支援的清單和資料表操作。
- 原生非類型化物件支援,適用於自訂物件、清單和資料表。 有關非類型化物件的更多資訊,請參閱非類型化物件資料類型。
- 引入此變更是為了減少設計時警告和延遲型別的使用。 非類型化物件是一種在設計時處理具有未知模式的類型的方法。
- 在先前的版本中,處理動態變數 (類型或值可以在執行時變更的變數) 和動態值 (類型或架構在執行時確定的值) 同樣的方式。 在運算式中使用 Power Fx 動態值或動態變數時,將觸發警告:「提供延遲類型」。出現這些警告是因為 Power Fx 強制實施嚴格的類型架構 (強定義的類型)。 從這個版本開始,我們區分了這兩種情況。 雖然動態變數繼續生成「延遲類型」警告,但動態值現在被視為非類型化物件。
- 所有資料表變數都是非類型化的,而將 JSON 轉換為自訂物件操作生成的自訂物件是非類型化的。 使用 Power Automate 變數類別中的 桌面操作操作清單後,清單將變為非類型化。
- 以前,標準操作庫中的某些自動化操作,例如 從 Excel 讀取、從 CSV 讀取、從網頁提取資料、從視窗提取資料、執行 SQL 語句和將 JSON 轉換為自訂物件會產生一個動態變數,並伴隨一個「延遲類型」警告。 他們現在改為產生非類型化資料表或非類型化自訂物件變數。
- 設定函數 Power Fx 現已啟用,但尚未完全支援。 雖然它不能用於直接修改變數的值,但它可以與上述結構一起使用,以更新自訂物件屬性和特定索引 (例如,
=Set(Index(Index(DataTable, 1), 1), 42)
或=Set(customObject.property, 17)
) 中的清單值。 - 修正了在啟用 Power Fx 的流程中存取物件的嵌套清單屬性的問題。
注意
在電腦版 Power Automate 版本 2.48 中,對已啟用 Power Fx 的桌面流程進行了更新,這些更新可能會影響使用早期版本建立的已啟用 Power Fx 流程的執行。 建議使用現有的 Power Fx 流程徹底測試此版本。
- 下層流程輸出:在啟用的桌面流程中 Power Fx 使用子流的輸出變數時請務必小心。 這涉及到清單、自訂物件和資料表類型的輸出變數。
- 單值列數組:使用類似
=[1, 2, 3]
運算式建立的數組會在 Power Fx 已啟用的流中產生單值列數組,其項目是具有單一屬性的物件:{Value: 1}
。 在使用操作修改第一個陣列後,嘗試存取Value
此項的屬性會導致編寫錯誤。 - Power Fx 函式用法:在特定 Power Fx 函式中,例如
IsEmpty()
,先前的版本接受動態變數作為參數,並且不會引發驗證錯誤。 在 2.48 版本中,使用作為動態變數處理的變數會導致驗證錯誤,並且無法執行現有流程。 解決方案是對動態 (非類型化) 值進行正確的轉換。 了解有關在非類型化物件資料類型中轉換函數的詳細資訊。 編輯流程時可能會遇到此問題,並收到如「參數類型無效 (非類型化物件)」的錯誤訊息。 而是需要一個表值。若要解決此問題,請跟隨錯誤訊息將運算式轉換為有效運算式。- 使用動態變數和類型變數組合時可能會引發驗證錯誤的函數的其他範例包括
Sum()
、Filter()
,Concatenate()
和運算子,例如in
(例如"string" in DynamicValueObject
)。
- 使用動態變數和類型變數組合時可能會引發驗證錯誤的函數的其他範例包括
- 變數比較:與前面提到的問題類似,在涉及動態值的運算式上應用比較運算元 (
=
、<>
、>
、<
等) 時,可能會出現類型不相容。 在比較動態值之前,請務必小心並套用正確的轉換。
2.43
在 2024 年 4 月的發行版本:
- 區分大小寫。 例如,NewVar 與 newVar 是不同的變數。
- 執行 Power Fx 運算式動作可在變數動作群組下使用。 執行 Power Fx 運算式可讓您直接在資料來源上執行運算式。
- 桌面流程支援 Collect、Clear、ClearCollect Power Fx 函式。
- 桌面流程支援 Patch Power Fx 函式。
- 變數和 Power Fx 運算式可用於 UI 元素或 Web 選擇器語法。
- 差補值現在可以加入 UI/Web 元素選擇器的語法中。 對於差補字串,可以使用以下語法:${ Power Fx expression }。
重要
在電腦版 Power Automate 版本 2.43 中,對已啟用 Power Fx 的桌面流程進行了更新,這些更新可能會影響使用早期版本建立的已啟用 Power Fx 桌面流程的執行。 具體而言:
- 區分大小寫的變數名稱:使用電腦版 Power Automate 版本 2.43 及更新版本建立的啟用 Power Fx 桌面流程中的變數名稱區分大小寫。 使用電腦版 Power Automate 版本 2.42 及之前版本建立的 Power Fx 桌面流程可使用不區分大小寫的變數名稱。 例如,NewVar 和 newVAR 參考相同的變數。 對於使用電腦版 Power Automate 版本 2.42 及先前版本建立的已啟用 Power Fx 桌面流程,請確保查看並驗證產生的變數是否符合預期。
2.42
2024 年 3 月版本:
- IntelliSense 功能現在可用於支援 Power Fx 的桌面流程。
- 語法著色
- 鍵入時自動完成功能並提供即時建議
- Power Fx 函式的簽章協助程式
注意
IntelliSense 功能可用於運算式。 若要輸入運算式,請在對應輸入的開頭使用等號 (= 您的運算式) 或字串內插補點標記法 (${ 您的運算式})。
- 函式選擇器
- 當與對應的輸入互動時,您可以使用遊戲中的 fx 按鈕存取函式選擇器。 目前桌面流程支援的所有 Power Fx 功能均可在此處使用。
2.41
2024 年 2 月發行版本:
- 從現在開始,不以等號 (=) 開頭的輸入將視為文字類型值。 數值和布林值輸入必須始終以等號開頭。
- 輸入現在支援差補字串。 若要在輸入中包含內值,請跟隨以下語法:
Text before ${variable/ expression} text after
- 範例:
The total number is ${Sum(10, 20)}
- 範例:
注意
若要使用差補字串語法,請省略輸入開頭的等號 (=)。
2.39
2023 年 12 月發行
- 如果提供的輸入不以等號開頭,則適用下列規則:
- 不帶空格的數值將被解釋為數值。
- True/ False 做為輸入,無論大小寫且不帶空格都解釋為布林值。
- 所有其他輸入均視為文字類型值。