這陣子開始密集在接觸Uipath,也開始有一些研究跟心得,在執行RPA的流程時,會發現RPA本身有一些侷限,它可以模擬人類去操作介面點選,但例如資料處理的完整度就沒有python pandas來得高,此時就可以使用Uipath搭配Python的方法來搭建流程,讓整個流程更方便處理。
執行python腳本的兩種方法:
- 在Uipath內下載python擴充套件,使用python區塊
- 內建的區塊:Start Process
由於篇幅關係今天先來分享第一種方法。
在Uipath中下載py擴充套件的python功能會比較多元,各位可以先使用這個當作執行python的方法。
在開始前你先要有:
- 已安裝uipath studio
- 已安裝python
- 已安裝.net
- 如果你的python版本是3.9以上,必須下載.net 6.0版本
Uipath Studio下載python擴充套件
接下來會先分享如何在Uipath Studio中安裝pyhton擴中套件,並寫一個示範的python腳本,並讓Uipath可以順利執行這個腳本。
打開Uipath Studio空白專案後,上方會有一個Manage Packages的按鈕,點選後會跳出以下視窗:
- 點選All Packages
- 搜尋Python,點選Uipath.Python.Activies
- 右邊點選版本 按Install (目前最新版本1.10.0,還有另一個2.0.0-preview不是穩定版本我就下載那版)
- Install之後,下方的Save才可以點選,記得點選才會進行套件下載

點選Install

Install後點選Save

python套件下載畫面
在Uipath中拉取python流程
先新增一個空白頁面,選擇Flowchart (註:這裡有很多種類型可以做點選,之後會有別的文章再詳細做種類的介紹)。
在Activities當中,App Invoker有一欄python,把Python Scope拉取出來放到Flowchart頁面中如下圖:(記得把箭頭從Start拉到Python Scope才會流程連起來)
要執行python的動作,都要把流程放進python Scope中,這是Uipath的規則。


在python scope中,點選它,右邊會出現Properties的區塊讓你做細部的設定操作,而在這邊Library path, Path, Target, version選項較為重要,當初也花了一點時間做嘗試。
- Library path :python下載在你電腦的路徑並且要.dll 結尾的檔案。
- Path:python下載在你電腦的路徑。
- Target:python版本3.9以上選擇x64。
- Version:確定版本可以選擇該版本,不要使用預設的auto。(我的py版本3.12)
這部設定完成之後,才能繼續拉取相關的python功能。
接續剛才Library path的設定,要如何取得python下載的路徑位置呢?
可以打開 終端機:where python,第一行便顯示python路徑位置,到該資料夾C:\Users\User\AppData\Local\Programs\Python\Python312
會看到裡面有一個python312.dll,這便是Library path需要的檔案路徑(如下圖)
上面顯示的是我的範例位置,各位的實際位置還是要照上述所說步驟去取得囉!
那以我的例子來說
我的Library Path就會是C:\Users\User\AppData\Local\Programs\Python\Python312\python312.dll
Path會是:C:\Users\User\AppData\Local\Programs\Python\Python312

終端機輸入指令

到該資料夾會看到.dll檔案
以上為python scope的設定。
接下來將會設定:你要跑的py腳本在哪邊?,要呼叫的function名稱?,要帶入的參數?及接收回傳回來的值。
將python scope拉出來後,對它雙左鍵點擊,就會展開這個方框,裡面我們會需要再將
1. Load Python Script放進Do方框中
2. Invoke Python Method放進Do方框中
3. Get Python Object放進Do方框中
而這三個方框的Properties也都是重要的一環,是可否跑成功的關鍵因素。我將依各個區塊做詳細解說。

Python範例腳本
在開始做uipath細節設定之前,記得先準備好python腳本,這邊我簡單寫一個腳本,各位可自行套用你們的腳本跟uipath做串連。
test.py
import traceback
def sum(a, b) -> str:
try:
result = a + b
return str(result)
except Exception as e:
print(f"Error occurred: {e}")
return "Error: " + traceback.format_exc()
Properties細節設定
Load Python Script區塊
區塊內需要放py腳本完整路徑(用字串""包住),區塊中填寫的值等於Properties中的File欄位喔。
接下來還需要設定Output -> Result,需要創立一個變數讓Load出來的腳本存放結果。
我這邊創立out_py_obj變數,Data Type需選PythonObject。

Invoke Python Method 區塊
區塊需填寫function的名稱(用字串""包住),等於Properties中的Name欄位。我要使用python的sum function所以填"sum"。
InputParameters: 要放sum function要傳的參數,在uipath中需使用New Object() {}將值放在大方框中才能順利傳給python。以我這邊的例子就是New Object() {2, 3}。
Instance: 這裡要放上一步Load Python Script中Result的變數:out_py_obj。
Result: 這裡則須再創建一個新的變數來存放python return回來的結果。 我這邊創立out_result_py變數,Data Type一樣是PythonObject。

Get Python Object區塊
這個區塊填寫上一步Invoke Python Method中Result的變數:out_result_py(目的是想解析回傳回來的值),等於Properties中的PythonObject欄位。
Type argument: 選回傳回來的值的型別,我python寫的function會回傳字串,sum(a, b) -> str,這裡便選String。
Result: 這裡比較特別是他要再轉換成.net的型別才能正常顯示回傳結果,所以還需再創立變數,這裡取out_donet,Data Type就選String。

最後我加上log Message區塊來查看執行結果,結果確定印出log為5代表成功!
補:在流程中必要的地方加上log是之後debug很重要的依據~

結論:
上面介紹中提到很多Properties的區塊做細部的設定操作,在Uipath中是這樣的設計,除了拉選左邊的功能出來之後,右邊其實還有很多細節需要注意跟完成設定,否則很容易卡關,這也是很多人學習Uipath卡關的其中一個原因。需要多加注意就可以更進步的拉流程~
之後會再分享另一種執行python腳本的方式:)
有遇到問題歡迎留言討論!

















