iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
AI 自動化

30 天一起培養一個習慣:把工作交給 AI 之前,先判斷,再搭建工作流系列 第 17 篇

Day 17 : 先建觸發再接動作,中間問一句它有哪些格子可以填

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20260922/20141298UvkzfQvWjW.png

換行全部黏成一行

一句話,十秒建好,兩個節點,執行紀錄上一排綠色勾勾,耗時三秒。

信到了。三段摘要黏成一行,中間沒有任何斷開。

回頭看那條流程,內文那一格確實放了我給的內容,換行符號也在裡面。問題出在另一格:有個參數叫「是否為 HTML」,它是關著的,所以換行被當成純文字裡的空白吃掉了。

那一格我沒有講過。沒有講的原因不是忘記,是根本不知道有這一格。

兩個節點,三種「成功」

流程只有兩格,但「做完了」這件事有三個互不相同的判準。

這一層說的成功 誰看得到 它不保證什麼
流程執行成功 執行紀錄上的綠勾 不保證參數是對的,只保證每個動作沒有丟出錯誤
動作回報成功 動作的輸出 不保證對方收到,只保證請求被接受
事情真的完成 收件匣裡那封信的內容 這一層流程看不到,只有人看得到

三層之間的落差,就是驗收條件要補上的位置。愈往下,流程能告訴你的愈少,而多數人只看第一層。

Day 15 那份規格裡,Action 那一欄要求每一步都寫出成功的判準。當時填起來像廢話,現在它有了形狀:Send an email (V2) 回報成功,意思是這個動作把信交出去了,不是它到了,更不是它長得對。

今天算是運氣好,信到了,只是內容不對。如果收件者位址是它從我的帳號推論出來的,而那個推論剛好錯了,三層照樣全綠,連那封信都看不到。

手動觸發不等於沒有輸入

Manually trigger a flow 可以新增輸入欄位,型別涵蓋文字、數字、日期、是否、檔案。這件事比它看起來重要:加了輸入欄位,等於把 Day 15 規格裡的 Input 那一欄第一次做成一個介面。

而每多一個欄位就多一個要回答的問題:這一格沒填會怎樣?這條流程的答案是「不會怎樣,它照樣寄出一封空白的信」。這個答案本身,就是後面幾天要處理的東西。

今天的目標,跟這條流程的目標不是同一件事

這條流程真正要達成的是讓值班的人早上知道昨天出了什麼事。今天這一版離那個目標很遠:資料要手動貼、按鈕要自己按、收件者也是自己。

今天的目標是另一個,建出一個我說得出每一格為什麼是這樣的版本。

所以這一天刻意留白兩格。資料從哪裡來,留到後面幾天;誰在什麼時候按,也留到後面幾天。現在這兩格都由自己充當。留白不是為了簡化,是把變數降到一個,因為這一版唯一要驗的只有一件事:一段整理好的內容,能不能完整地送到一個人手上。

開頭那三段黏成一行的摘要,就是「完整地」這三個字的反例。

一句話講完,跟分成兩句講

建這條流程有兩種說法。一種是把觸發跟動作寫在同一段描述裡,一次生出來;另一種是先建一條只有觸發程序的流程,確認輸入欄位是對的,再回頭把寄信動作接上去。

第二種多花五分鐘,換到的是一件事:每一次只有一個新東西可能出錯。

第一種的問題不在它會失敗,在於它成功的時候你也不知道為什麼。開頭那個換行事故,如果觸發跟動作是一起生出來的,原因要從兩個節點裡找;如果觸發已經單獨驗過,範圍就只剩一個。

這跟先寫規格再建流程是同一件事,只是尺度小了一階。Day 15 是在動工之前把決定先做完,今天是在每一次動工之間,把上一步先驗完。

它沒有下拉選單,但清單可以要

在介面裡點開一個動作,參數會攤在你面前。副本、重要性、是否為 HTML、附件,你不一定看得懂每一格,但你至少知道它們存在。

用講的沒有這一層。你描述裡沒提到的參數不會出現在對話裡,它也不會主動說「順帶一提這個動作還有十二個欄位」。下拉選單是一份清單,一段話沒有清單。

差別不在能力,在於誰負責把選項攤開。介面替你攤開,用講的要自己開口。

所以今天第二段的指令書裡有一條要求:在填任何參數之前,先把這個動作的完整參數清單列出來,標明哪些打算填、哪些留空、哪些它要自己決定。這一句話的成本是幾秒鐘,而它買回來的東西,就是開頭那個你不知道存在的格子。

這四天的前置條件(2026/09 查核)
Power Automate plugin 需要 Node.js 18 以上、Azure CLI 已登入(az login --allow-no-subscriptions)、一個啟用 Power Automate 的環境以及對應授權。安裝走官方的 Power Platform Skills marketplace,先 /plugin marketplace add microsoft/power-platform-skills,再 /plugin install power-automate@power-platform-skills,裝完重啟 agent session,用 /setup 檢查一次。
另外提前說明:Day 19 起會用到 Request 觸發程序,它屬於 premium;Day 20 需要一個 SharePoint 站台,以及一台連得到地端資料庫的機器。看到這裡可以先確認自己跟得到哪一天。

今天可以做的一件事

最省事的一句是這個:

幫我用 Power Automate plugin 建一條手動觸發、然後寄信給我的流程。

它會建出來,也會跑成功。收件者是誰、主旨怎麼寫、換行怎麼呈現,它全都替你決定了,而你要看到那封信才知道它決定了什麼。

下面四段依序跑。第一段只建觸發,第二段才接動作,而中間那一次確認是這一天的重點。

第一段:只建觸發程序

我要在 Power Automate 建一條流程,請使用 Power Automate plugin 執行。
這一步只建立觸發程序,不要加任何動作。

【環境】
環境名稱:<填入你的環境顯示名稱>
流程名稱:Day17-手動觸發-值班摘要寄信
建立後保持停用狀態,不要自行啟用。

【觸發程序】
使用 Manually trigger a flow(手動觸發流程)。
新增三個輸入欄位:
- ReportDate,型別 Text,說明「這份摘要的日期,格式 yyyy-MM-dd」
- FailedJobCount,型別 Number,說明「昨天未完成的批次作業數量」
- Summary,型別 Text,說明「摘要內文,可能包含換行」

【不要做的事】
- 不要加入任何動作,包含你認為一條流程至少需要一個動作的情況
- 不要加入條件、變數或迴圈
- 不要自行替輸入欄位填入預設值

【建立前的回報】
1. 這個觸發程序的正式名稱,以及它在 Power Automate 裡屬於哪一類流程
2. 輸入欄位的型別總共有哪幾種?把我這次沒用到的也列出來
3. 一條只有觸發程序、沒有任何動作的流程能不能存檔?
4. 我沒有明講、但你必須自己決定才能建起來的每一項,逐項列出

第 2 題就是介面上那份下拉選單,只是現在要靠你開口才拿得到。你這次用了三種,清單上還有幾種是你沒想過可以用的,其中一種是檔案。Day 20 要處理地端資料的時候,這一格會回來。

第 3 題看它怎麼答,然後自己去存一次檔。這條流程現在能做的事等於零,可是它的輸入介面已經可以驗了,而驗完之後接下來那一步就只剩一個變數。

第二段:先要清單,再接動作

請在 Day17-手動觸發-值班摘要寄信 這條流程中,
接在觸發程序後面加上一個動作:
Office 365 Outlook 的 Send an email (V2)。

在你動手之前,先做完【動手前的回報】,我確認之後你才修改流程。

【這個動作要怎麼填】
- 收件者:觸發這條流程的人的信箱
- 主旨:固定前綴「[值班摘要] 」後面接 ReportDate 的值
- 內文:第一行為「未完成作業數:」接 FailedJobCount 的值,
  空一行之後放 Summary 的值

【不要做的事】
- 不要修改觸發程序的任何設定
- 不要加入第二個動作、條件或錯誤處理
- 不要自行填入我沒有指定的參數值

【動手前的回報】
1. 把 Send an email (V2) 的完整參數清單列出來,一個都不要略過,
   包含進階參數。每一項標明:參數名稱、用途、是否必填。
2. 承上,逐項標明你打算怎麼處理:填我指定的值、留空、
   或是你要自己決定一個值。第三類請單獨列成一區。
3. 第 2 題第三類的每一項,說明如果填錯會發生什麼事,
   以及我什麼時候會發現。
4. 我的三行描述中,有沒有哪一句其實對應到不只一個參數?

第 1 題那份清單是這一天真正的產出。它會比你預期的長,而長出來的部分正是你講不出來的那些。把它存起來,這是你對這個連接器的第一份地圖,而且它跟你在介面裡看到的那一份應該要一樣長。

第 2 題把清單分成三堆,第三堆是危險區。開頭那個換行事故就在第三堆裡:內文格式那個參數我沒指定,它自己決定了一個值,而那個值讓換行消失。

第 3 題問「我什麼時候會發現」,答案大多是「看到結果才會」。這正是第四段要補的東西。

第 4 題最容易被跳過。那句「內文:第一行……空一行之後……」同時牽動內文本身和內文的格式設定,寫的時候以為只講了一件事。一句話對應到兩個參數的時候,它會挑一個填,另一個留給預設值。

第三段:讀回定義逐格檢查

流程已經改好。請不要再修改它。

請讀回這條流程目前的完整定義,然後逐項回答:

1. 觸發程序的三個輸入欄位,名稱、型別、說明是否與我給的一致?
2. Send an email (V2) 的所有參數,逐一列出目前的狀態,
   分成三種標示:有值(寫出實際的值或運算式)、值為空、
   該參數不存在於定義中。不要把後兩種合併。
3. 第 2 題中「有值」的每一項,標明這個值的來源:
   (a) 我明確指定的
   (b) 我沒指定,但你在上一步告訴過我你要自己決定的
   (c) 我沒指定,你也沒提過,而它現在有值

只回答這三題。不要提出修正建議,不要順手修改任何設定。

第 2 題那個三分法是這一段最容易被跳過、也最關鍵的要求。一個參數在定義裡根本不存在,跟它存在但值是空字串,後果完全不同:前者走連接器的預設行為,後者是你明確送出了一個空值。而這兩件事在畫面上看起來一模一樣。

第 3 題的 (c) 類是今天最後一道檢查。上一段已經請它把要自己決定的都先講出來了,理論上這一類應該是空的。實際上不一定,而不是空的那幾項,就是這條流程裡唯一沒有人審過的決定。

第四段:把「成功」定義清楚,然後才跑

這條流程要跑第一次了。在跑之前,先把「成功」定義清楚。

請針對下面三個問題各給一個可以實際檢查的判準,
每個判準都要寫清楚我該去哪裡看、看到什麼才算通過:

1. 流程執行成功,跟我收到這封信,是不是同一件事?
   如果不是,這條流程能觀察到的最後一步是什麼?
2. 信件內容正確要怎麼驗?Summary 裡有換行的時候、
   FailedJobCount 是 0 的時候,各自應該長什麼樣子?
3. 如果這條流程跑失敗,我會在什麼時候、用什麼方式知道?
   以這條流程目前的設定,答案是什麼?

第 3 題如果答案是「不會主動知道」,就直接寫不會,
不要補上你認為應該加的通知動作。

第 3 題的答案會因為環境設定與通知偏好而不同,別直接採信它講的,去自己的信箱和流程詳細資料頁各確認一次。這一格是後面幾天所有「出錯沒有人看到」的起點。

留到明天的問題

流程建好了,清單存下來了,換行的問題也修好了。現在這封信會寄給值班的人。

值班的人會換。換的那天要改收件者,而如果沒有人改,信照樣準時寄給上一個人,三層成功照樣全綠。

出口指向一個人的時候,這條流程的正確性就綁在一份只有一個人記得的對應關係上。它不會出錯,只會一直是對的,直到某一天突然不是。

https://ithelp.ithome.com.tw/upload/images/20260922/20141298MCyFQNR1dt.png


上一篇
Day 16 : 規格寫好了,接下來用講的把流程建出來
系列文
30 天一起培養一個習慣:把工作交給 AI 之前,先判斷,再搭建工作流 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言