iT邦幫忙

1

【讓機器人幫我工作】Power Automate Desktop 實作-取得系統日期

  • 分享至 

  • xImage
  •  


這一篇就來進入實作的部分。

首先,在設計自動化流程前最重要的一件事情就是必須要有一個目標,也就是你想要機器人幫你做什麼呢?

所以我們來設定一個目標,那就是:

我想讓機器人幫我做螢幕截圖,然後用當天日期當作檔名存成一個圖檔!

在有了這個目標以後,我們就來解析一下,我的目標在執行的時候的流程會是怎樣的吧!

我們先把目標拆開成兩個部分,也就是第一部分的我想讓機器人幫我做螢幕截圖,

和第二部分的然後用當天日期當作檔名存成一個圖檔。

在第一部分的我想讓機器人幫我做螢幕截圖的動作,由於我沒有要求在哪個程式或軟體上執行時的畫面截圖,

所以直接截圖就可以了!

而第二部分的然後用當天日期當作檔名存成一個圖檔,則是會稍微複雜一點,因為這段話總話要拆成幾個動作,

分別是:

1.取得系統的日期

2.把取得的系統日期變成一個文字變數

4.把文字變數變成檔名

5.存成圖檔

以上這幾個動作缺一不可,因為還是那句話,電腦其實很笨的!!

以人類的思維是:"把那個日期當成檔名存起來就好了"的這麼一句話,但對電腦來說,

它最少要拆解成這樣5個項目才能完成這一句話的事情呢!

所以在設計流程的時候不僅要有個明確目標以外,這個目標內的流程都要是有固定作業流程的喔!


提問:如果作業流程不固定的話能不能做?

只能說,有機會可以,但很高的機會都會失敗!

因為光一個有著明確的目標的流程都要拆成5個動作了,那當流程不明確的時候勢必得要做很多判斷的動作

去驗證當下是屬於哪種情況,機器人才能確定接下來要走哪個流程,如此一來光流程就會很龐大又複雜,

更別說設計時又需要花費大量的時間去開發和除錯了…

也有可能你原本設想的情境都開發&除錯完了,機器人也正式上線運作了,結果卻突然發生從未想過的狀況,

結果就是又得來重新開發一個新的流程……但這會是最後一次發生這種狀況嗎?

所以如果流程是"不固定的",那麼其實不建議用機器人去跑!


上面的補充說明有點跑題了,現在讓我們回到主題。

由於上面已經把目標拆開成為兩個部分了,所以在流程設計上也會先從第一部分開始,

再接序到第二部分,最後完成整個流程。

那就讓我們來看下第一部分我想讓機器人幫我做螢幕截圖要怎麼做吧!

這邊非常簡單,因為螢幕截圖的"動作"在"工作站→拍攝螢幕擷取畫面"就有了!

【讓機器人幫我工作】Power Automate Deskt

所以只要將拍攝螢幕擷取畫面的這個動作放入到編輯區內就可以了!

以滑鼠左鍵點擊並按住動作清單中的"拍攝螢幕擷取畫面",然後向右手邊拖曳至編輯區內:

【讓機器人幫我工作】Power Automate Deskt

系統會跳出提示訊息,詢問要擷取哪個畫面

若沒有雙螢幕或其他需求,這裡就不需要進行調整了!

【讓機器人幫我工作】Power Automate Deskt

或是可以在擷取的下拉清單中選擇要擷取的螢幕畫面

【讓機器人幫我工作】Power Automate Deskt

選好以後一樣點"儲存"按鈕就可以了!

但由於我的目標是將"螢幕畫面存成一個圖檔",所以在"將螢幕擷取畫面儲存至"的下拉清單中,

要將"剪貼簿"改成"檔案"

【讓機器人幫我工作】Power Automate Deskt

但這個時候就發現有趣的事情了,那就是要把畫面截圖存檔時是需要"存檔的路徑"和"檔名"的!

(設定視窗下方可以選擇影像格式)

【讓機器人幫我工作】

【讓機器人幫我工作】Power Automate Deskt

所以要達到我們一開始設定的目標,其實是要先做第二部分的!!(也就是要先取得檔名)

這部分也可以看出,雖然目標是一樣的,但需要一步步執行每個動作的電腦和人腦的邏輯順序不一定完全一樣的。


※當然你也可以在一開始設定目標時改成這樣:我想讓機器人幫我將圖片用當天的日期做檔名來存檔,然後圖片內容是螢幕畫面的截圖;但這樣敘述總覺得在先後順序上感覺怪怪的......


由於檔名是需要從第二部分取得的,所以這邊先按取消,暫且先跳過存檔位置和檔名的部分,

改為進行第二部分的流程製作!

既然是用當天的日期檔作為檔名,那麼一開始就必須要取得系統日期了

(系統日期必須要是正確的喔)

而這個動作在"日期時間"清單內的"取得目前日期與時間"

【讓機器人幫我工作】Power Automate Deskt

然後同樣將它拖曳到編輯區,並放在拍攝螢幕擷取畫面的上方

(系統會出現一條灰色橫槓作為標示線,讓你確認拖曳到哪個位置)

【讓機器人幫我工作】Power Automate Deskt

拖曳後系統會跳出設定視窗
【讓機器人幫我工作】Power Automate Deskt

由於我想要的檔名只要日期,所以在擷取旁的下拉式清單中選"僅目前日期"

![【讓機器人幫我工作】Power Automate Deskt]https://pic.pimg.tw/zxcv322/1710404175-840657958-g.png)

接著PAD會自動產生一個"變數"給擷取時間這個動作以後得到的結果

(變數名稱也可以自行修改,下面會說到)

【讓機器人幫我工作】Power Automate Deskt

也就是找個地方(變數)放擷取系統日期後得到的日期(值)。

接著在到動作的"文字"清單中找到"將日期時間轉為文字",

並拖曳到編輯區中的"取得日期與時間"的下方!

【讓機器人幫我工作】Power Automate Deskt

系統一樣會出現"將日期時間轉換為文字"的設定視窗

【讓機器人幫我工作】Power Automate Deskt

在"要轉換的日期時間"旁的欄位中,點選最右邊的{X}字樣,

然後選取前面擷取系統日期動作所產生的那個變數

【讓機器人幫我工作】Power Automate Deskt

選取後:

【讓機器人幫我工作】Power Automate Deskt

接著設定格式,預設為"標準",選擇"標準"時,系統會依照下一個選項"標準格式",

把值寫入"將日期時間轉換為文字"的變數"FormattedDateTime"中

至於產生的文字長怎樣,則是可以參考"樣本"中顯示的文字。

【讓機器人幫我工作】Power Automate Deskt

系統也在下拉式清單中預設了很多"標準格式"供開發者選擇,如果沒有特別的格式需求的話,

直接使用預設的也可以

【讓機器人幫我工作】Power Automate Deskt

完整的設定畫面:

【讓機器人幫我工作】Power Automate Deskt

不過像我在做每日檢查或是檔案確認時,每個系統所產生Log檔的檔名格式都不一定是一樣的,

所以"要使用的格式"那邊就得選擇"自訂"了!

【讓機器人幫我工作】Power Automate Deskt

【讓機器人幫我工作】Power Automate Deskt

然後要在自定格式旁的欄位中輸入我要的"日期格式"!

說明:

西元年 = yyyy(完整四位,如2024),或yy(末兩位,如24)

月份 = MM(完整兩位,如01;要特別注意,格式這邊的月份是用英文大寫)

日 = dd(完整兩位,如01~31)

時 = hh(完整兩位,如01~24)

分 = mm(完整兩位,如00~59)

秒 = ss(完整兩位,如00~59)

※排列順序就看需求使用了!

將滑鼠游標停在自訂格式欄位上時,也會顯示說明

【讓機器人幫我工作】Power Automate Deskt

這邊採用yyyy-MM-dd這個的格式,所以將yyyy-MM-dd填入欄位中。

【讓機器人幫我工作】Power Automate Deskt

然後點"儲存"按鈕,將設定儲存起來。

【讓機器人幫我工作】Power Automate Deskt

這樣檔名的部分就完成了!

【讓機器人幫我工作】Power Automate Deskt

至於為什麼要多做一個"將日期時間轉換為文字"的動作呢?

原因是因為對於電腦來說,時間格式和文字格式是兩種完全不一樣的"格式"!

想必大家都有用過Excel吧?在Excel中是可以針對儲存格設定不同的格式的,

不過一旦兩個儲存格的格式不同,那就有可能無法做計算或合併了!

【讓機器人幫我工作】Power Automate Deskt

所以保證格式的正確性就是一件非常重要的事情了!!

而在PAD設計的流程中,CurrentDateTime這個變數就是日期格式,

對電腦來說並不是"文字格式",但存檔的檔名卻是"文字格式",

所以還是先轉換下比較保險!


※關於變數的補充說明:

1."變數"的原理就是數學中教過的未知數,如:X、Y、Z。

所以變數的名稱是多變的,可以用任何名稱當作變數名稱
(但建議最好是可以一眼識別用途的名稱比較好除錯)

2.變數名稱請使用"英文"

3.動作的變數是可以修改的!

在系統預設中,同一個動作多次使用時,

第二個同樣的動作的變數會自動被加上流水號(從2開始,依序+1)

【讓機器人幫我工作】Power Automate Deskt

如果不想要這個名稱,也是可以修改的!!

修改方式為:

展開變數已產生(點選前方的>展開)功能

【讓機器人幫我工作】Power Automate Deskt

以滑鼠左鍵直接點選變數名稱進入反白的編輯模式

※主要修改的是兩個%符號中間的名稱,就算不小心刪掉%符號也不用擔心,

因為現在系統會自動幫你加上去了

【讓機器人幫我工作】Power Automate Deskt

改好後直接按鍵盤的Enter,或是在設定視窗的空白處點滑鼠左鍵

【讓機器人幫我工作】Power Automate Deskt

修改後:
【讓機器人幫我工作】Power Automate Deskt

4.當流程被執行過了以後,可展開位於PAD軟體右方的{X}圖示

(在Copilot圖示下方(2024/03的版本))

【讓機器人幫我工作】Power Automate Deskt

這邊可以看到流程執行後,每個變數在流程中得到的值是什麼!

(方便確認與除錯使用)

【讓機器人幫我工作】Power Automate Deskt

5.一個變數中可能不只有一個值

以CurrentDateTime為例,這一個變數其實可以細分成年、月、日、時、分、秒。

而在設計判斷式時,包含在CurrentDateTime內的年、月、日、時、分、秒

其實都是可以單獨取出來被使用的!

如要取得CurrentDateTime的年是幾年時,在判斷式的運算元變數中就可以設定為

%CurrentDateTime.Year%

月則是:%CurrentDateTime.Month%

【讓機器人幫我工作】Power Automate Deskt

日為:%CurrentDateTime.Day%

【讓機器人幫我工作】Power Automate Deskt

更多變數應用可參考這篇:https://dotblogs.com.tw/ryuk/2023/06/25/010422


我們繼續回到主題。

取得檔名的部分處理完了以後,接著就回到第一部分儲存檔案的檔名和路徑設定。

再次於編輯區內的流程終點開"拍攝螢幕擷取畫面"的動作

【讓機器人幫我工作】Power Automate Deskt

把儲存至剪貼簿改成"檔案"

【讓機器人幫我工作】Power Automate Deskt

在影像點選"選取檔案"圖示

【讓機器人幫我工作】Power Automate Deskt

先設定一個存檔路徑及臨時檔名(線隨便設為123,之後會改掉)

【讓機器人幫我工作】Power Automate Deskt

點了"開啟"後會回到"拍攝螢幕擷取畫面"的設定視窗,但系統會報錯,不過沒關係,

在路徑的最後加上前面日期轉換成文字的"變數名稱"並加上"副檔名"(圖檔格式)就可以了

更改前:

【讓機器人幫我工作】Power Automate Deskt

影像檔的存檔路徑中用"變數名稱"(%FormattedDateTime%)取代"臨時檔名"(123),

並在最後加上圖檔的副檔名(如,.png/.jpg...等,記得格式前面有加上一個點符號(.))

【讓機器人幫我工作】Power Automate Deskt

然後把下面的"影像格式"改成和存檔路徑中設定的副檔名相同的格式,

並點選"儲存"按鈕即可!

【讓機器人幫我工作】Power Automate Deskt

設定完成畫面:

【讓機器人幫我工作】Power Automate Deskt

如此一來,流程基本就算設定完成了,要記得存檔一下喔!

【讓機器人幫我工作】Power Automate Deskt

接著就讓我們執行一下吧!!

【讓機器人幫我工作】Power Automate Deskt

點選執行後,在軟體左下角會有目前的狀態:

【讓機器人幫我工作】Power Automate Deskt

**補充說明:**這裡需要等待一下,然後PAD軟體可能會呈現無回應/反白的狀態…

除非Windows真的跳出警告視窗通知PAD程式無回應,不然就只要等它完成就可以了!

執行成功:

【讓機器人幫我工作】Power Automate Deskt

最後再說明下,由於本次作為範例的流程只是單純要機器人去做"截圖+存檔",

並沒有要機器人去檢查存檔路徑內是否已經有檔案存在,所以要是執行了1次以上的話,

前一次執行的圖檔是會被取代掉的!

這點要特別注意喔!!

如果不想要讓執行後的圖檔被取代的話,也是可以做到的,

作法上除了需要加上判斷式確認有沒有檔案以外,還要在檔名後面加上流水號作區別,

所以會比本次的範例來得複雜一些!

以上,就是本篇的全部內容了。


最後還有個小提問:

那就是有些動作中會有個"錯誤時"的選項,到底要不要去設定呢?

【讓機器人幫我工作】Power Automate Deskt

我自己是只靠判斷式的If,Else if和Else去執行,所以沒有去設定那個部分。

如果有心力和時間是可以去設定下的喔!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言