ตั้งเวลา Schedule RPA flow ด้วย Power Automate และ Power Automate Desktop

Narisorn Limpaswadpaisarn
EchoO365
Published in
5 min readApr 12, 2022

Content difficulty — Moderate

วันนี้เราจะมาทดลองการทำงานของตัว Robotic Process Automation (RPA) ใน Power Automate กันอีกครั้งซึ่งในตอนที่แล้ว (https://link.medium.com/nlix4CmK9ob) เราได้พูดถึงว่า เราสามารถสร้าง Desktop Flow เพื่อทำการ run ตัว RPA ได้ในโหมด Attended RPA (โหมดที่ run บนเครื่อง client โดย user ยังคงต้อง sign in ใน Windows desktop) และ Unattended RPA (โหมดที่มักเอาไว้ run บนเครื่องหลังบ้านเช่น server ที่ไม่มี user sign in โดย bot จะ log in เข้าไปทำงานแทน)

ตัว Power Automate นั้นหลักๆเราก็จะทำ workflow เป็นงานเพื่อส่งผ่านข้อมูล หรือ ทำ operation ต่างๆ ที่เกี่ยวกับ cloud เราเลยจะเรียกว่า Cloud Flow เพราะ จะมี Connectors ที่มาจาก cloud services ซะส่วนใหญ่ เช่น Microsoft Teams, Twitter, Outlook, Azure Storage, Adobe, GitHub, Dynamics 365, Trello, HTTP เป็นต้น รวมถึงการ call ลงไปที่ระบบ on premise เช่น SQL, Oracle, SAP โดยการตั้งตัว On premise gateway เป็น server คอยชี้ว่าระบบจะต้องไปหา Database server หรือ ERP ตัวไหน ในการทำ automation

ในส่วนของ Connectors ว่าแต่ละ Office 365 plans ต่ออะไรได้บ้างไม่ได้บ้างไว้อธิบายในโอกาสถัดไป

แต่ส่วนของการ automate app ต่างๆใน Windows Desktop นั้นเราจะใช้ตัวโปรแกรมชื่อ Power Automate Desktop (ที่ลงได้ใน Windows 10 ขึ้นไป และ Windows Server 2016 ขึ้นไป) ในการ run แทนโดยการสร้าง flow ตรงนี้เราจะเรียกว่า Desktop flow ซึ่ง user ที่มี Microsoft account (Outlook, Hotmail) หรือ Office 365 Plans จะโหลดได้ฟรี สามารถเอาไปลงที่เครื่อง client หรือ server ที่เป็น Windows 10, Windows Server 2016 ขึ้นไปทั้งใน Physical หรือ Virtual Machine

Power Automate Desktop ก็จะมาช่วยปิดช่องว่างอีกส่วนคือนอกจาก Windows Desktop app แล้วในองค์กรหลายๆองค์กรก็จะมี Legacy app เพราะเนื่องจาก Desktop หรือ Web application ขององค์กรที่เก่าๆบางตัวไม่ได้สามารถที่จะ develop มาเป็น API ให้ Power Automate call ได้ ในกรณีนี้ก็จะใช้ตัว Power Automate ในการ record step จำลองการ คลิก user interface แล้วก็บันทึกค่า

อธิบาย Purchase Plan ของ Power Automate เฉพาะในส่วนของ RPA

ตัว Purchase Plans จริงๆของที่ใช้ RPA ได้จะมีดังนี้

  • Power Automate per user plan with attended RPA สามารถ run ใน Attended RPA mode
  • Unattended RPA add-on ไว้สำหรับ run แบบ Unattended RPA mode

การจะซื้อ Unattended RPA add-on ได้นั้นจะต้องมี based license ที่เป็น Power Automate per user plan with attended RPA หรือ Power Automate per flow เสียก่อน

ซึ่ง Purchase Plans จะมีข้อดีคือ เนื่องจาก Desktop Flow จะทำได้แค่ Manual trigger คือ user ต้องไปกดปุ่มเพื่อ start flow ของ Desktop flow เองทำให้ถ้าในกรณีของ free user จะไม่สามารถทำ Automate flow (ให้เริ่ม run ถ้าเหตุการณ์เฉพาะนั้นๆ เกิดขึ้น) หรือ Schedule flow (run flow ตามเวลา) ได้เลย ซึ่ง Automate และ Schedule จะสามารถทำได้จาก Cloud flow

เราต้องกดเพื่อเริ่ม run flow เองแบบ manual ถ้าไม่ได้ใช้ร่วมกับ Cloud flow

แต่ user ที่ได้ license จาก Office 365 ก็จะสามารถสร้าง cloud flow ได้แต่ตาม license แล้วไม่สามารถเชื่อม Cloud Flow ลงไปที่ Desktop flow ได้ เพราะการจะเชื่อมนั้นจะต้องมี qualified license ตามข้างบน

ความต่างเวลา sign in ทั้ง 3 แบบคือ user ที่มี RPA license, user ที่ใช้แค่ Office 365, user ที่ใช้ Outlook/Hotmail

เพราะฉะนั้นใน purchase plan ที่มี RPA ก็จะสามารถให้ flow ร่วมกันระหว่าง Cloud Flow และ Desktop flow ซึ่งในกรณีนี้ตัว Desktop Flow ก็จะสามารถ run แบบ Automate หรือ Schedule ได้เพราะมี cloud flow ทำงานและส่งคำสั่งกลับลงมาที่ Desktop flow และตรงนี้ก็จะได้ Service Level Agreement (SLA) benefits จาก Power Automate Cloud flow ด้วย

เกริ่นมายาว…ในตอนที่แล้ว (https://link.medium.com/nlix4CmK9ob) ทางผมได้จำลองการทำ Automate flow จาก Cloud flow มาที่ Desktop flow แล้ว จากเหตุการณ์ที่ user ไปกรอก Microsoft Form และครั้งนี้ผมจะมาทำ Schedule flow ดูบ้างครับ

สร้าง Desktop Flow

เริ่มจากการสร้าง Desktop Flow ผมตั้งชื่อว่า test1 จากนั้นจะเข้ามาสู่หน้าของ Edit flow

ทดลองให้ flow เริ่มจากการดึงค่า System Datetime ณ ขณะนั้น (Get current date and time) มาใส่ Display message หลังจากลอง run ก็จะมี Text Box ขึ้นมาพร้อมวันเวลาล่าสุดที่ดึงมาจากตัวแปร (สามารถคลิกเลือก variable ได้ที่ตรง {x} ในแต่ละ box)

Flow มี 2 actions
สามารถดึงค่าเวลาล่าสุดมาได้จาก action ก่อนหน้า variable ชื่อ CurrentDateTime

คราวนี้เราจะทดลองให้ flow บันทึกไปในระบบบ้างในกรณีนี้เรามี .csv file ให้ flow ไปบันทึก

ตัวอย่าง .csv file

ตอนนี้เราอยากให้ Display สามารถเลือก option ได้นอกจากการกดแค่ OK เราจะเปลี่ยนจาก Display message เป็น Display select from list dialog พร้อมใส่ choice ข้อความให้เลือก ในกรณีนี้ผมใส่ให้ user เลือกเป็น A, B, C และจะเก็บ choice ที่ user เลือกใน variable ชื่อ SelectedItem

สร้าง list ตัวเลือกให้ user คือ A, B, C เมื่อเลือกแล้วจะเก็บ text ไว้ใน SelectedItem

จากนั้นจะเอา Current Datetime และ Choice ที่เลือกมาเขียนเป็นบรรทัดใหม่ใน file .csv ใน action ชื่อ Write text to file ส่วนค่าแรกขอ hardcode เป็น zzzz ดูก่อน

write ค่าจาก flow ไปที่ .csv ตาม column ใน .csv
เมื่อ run จะมี choice ให้ user เลือกแล้วคลิก OK
write data จาก Desktop flow มาที่ .csv

ต่อมาเราจะเปลี่ยนจากที่เรา hardcode zzzz มาเป็น Input variable แทนชื่อ param1 ซึ่งเมื่อสร้างแล้วการที่เรา run flow จะ prompt หน้าให้เราใส่ Input variable ก่อนการเริ่ม run ละพอใส่ก็จะไป write ใน .csv file

สร้าง Input variable มา 1 ตัวชื่อ param1
ถ้าเรา run flow ให้ใส่ Input variable จากนั้นก็ไป run เพื่อเลือก choice ตัว A, B, C ต่อ

ในกรณีนี้ผมไม่ได้ใส่ Default value ตอนสร้าง Input variable ฉะนั้นการ run flow ต้องออกจากหน้า Edit flow มา run ข้างนอกในหน้าหลัก

ผลจากทดลองด้วย Input variable (parameter) แทนการ hardcode ด้วย text

สร้าง Cloud Flow

ทั้งหมดที่ทดลองข้างบนจะเป็นการ manual trigger ทั้งหมด แต่คราวนี้เราจะสร้าง Schedule Flow เพื่อให้ flow มัน run ตามเวลา เช่น ทุกๆ 1 ชั่วโมง หรือ ทุก 1 วันๆละครั้งในเวลาเที่ยงคืน เป็นต้น แต่เนื่องจากเราสร้าง Input variable (param1) ไว้ เราก็สามารถเอาข้อมูลไรก็ได้จาก cloud flow ส่งต่อไปที่ Desktop ได้เลย

การเชื่อม cloud flow มา Desktop flow ได้กล่าวไปแล้วในตอนที่แล้วคร่าวคือจะต้องมี license และ มีการตั้ง On premise gateway โดยการ install ลง server หรือ client ที่ run desktop flow หรือในกรณี RPA เรามีวิธีที่ง่ายกว่านั้นคือตัว Power Automate Desktop ที่เราลงจะมีให้ Register เป็น machine อยู่แล้วแทนการใช้ On premise Data Gateway

ใน version เก่าเราจะ register machine ใน Power Automate Desktop เลย (ตัวอย่างแบบในตอนที่แล้ว) แต่พอเป็น version ใหม่จะทำการ Register ผ่านตัวโปรแกรมชื่อ Power Automate Machine runtime แทน(ซึ่งก็มีให้ลงตอนเราลง Power Automate Desktop) โดยเราต้องชี้ Environment ให้ถูกระหว่าง Machine Runtime, Desktop Flow และ Cloud flow ในกรณีที่องค์กรของเรามีหลาย Environment

Register ตัว PC เราและเลือก Environment ให้ถูก

เมื่อเราพร้อมก็เริ่มสร้าง Cloud Flow กัน โดยไปสร้าง blank flow แล้วสร้าง trigger เป็น Recurrence

สามารถให้ run ทุกนาที, ชั่วโมง และอื่นๆ

แต่คราวนี้เราจะลองให้มัน run วันละครั้งอารมณ์เหมือนงาน clear ระบบหลังบ้าน โดยการ Set frequency เป็น Day แล้วก็ set จำนวนชั่วโมงกับนาที

แบบนี้ 17 และ 16 คือ run ทุกวันตอน 17:16 น. Timezone เป็น Bangkok
แบบนี้คือ run 2 ครั้งคือ 0:30 น. และ 18:30 น. Timezone เป็น Bangkok

จากนั้นเราหาค่ามาใส่ param1 กันในกรณีนี้ผมทดลองเป็นถ้าว่าอยากรู้ว่าใน Folder ของ SharePoint ผมในแต่ละวันมีกี่ file ให้บันทึกลงไปที่ .csv ของ Desktop Flow ก็ทำ flow actions ดังนี้

ตรง Expression ก็เขียนเป็น length(outputs(‘Get_files_(properties_only)’)?[‘body’]) จะเป็นการ Count ค่าของ step ชื่อ Get files (properties only) ว่า return มาแล้วได้กี่ file

Expression เปลี่ยนตัว ‘ เป็น single quote แบบตรงทั้งหมดนะครับถ้าใครจะ copy ไปใช้

และนำค่าไป run ต่อใน Desktop Flow ใส่ใน param1 โดย Desktop Flow เราต้องทำการใส่ sign in ให้เรียบร้อยจากนั้นเลือก machine และเลือก ชื่อ Desktop Flow ที่เราต้องการ

เลือกว่าจะใช้ On premise gateway หรือ Machine แล้วก็ใส่ username, password ที่เป็น domain user login

จากนั้นระบบจะ run ตามเวลาที่เราใส่ไว้ใน Recurrence

ถ้าที่ Recurrence เราไม่ได้กำหนดในช่อง Start time ระบบอาจจะ run ก่อนเอง 1 ครั้งหลังจากนั้นก็จะ run ตามเวลาที่เรากำหนด

Desktop Flow เริ่ม run ตามเวลา
ฝั่ง Desktop flow รอ Queue รับค่าจาก Cloud Flow
มี choice ให้ user เลือกแล้วคลิก OK
ผลลัพธ์จากการ count item ใน SharePoint Folder จาก Cloud Flow และส่งลงมาที่ Input variable ที่ Desktop Flow ซึ่ง param1 ทำการ count ได้ 4
พอไปดูที่ Document Library folder ที่เราชี้ก็จะเห็นว่ามี 4 file จริงๆ

สำหรับรายละเอียดการทำทั้งหมดดูได้ที่คลิปด้านล่างนี้นะครับซึ่งในตอนต่อไปเราจะมาพูดกันถึงในส่วนของการทำ Load Balancing

--

--

Narisorn Limpaswadpaisarn
EchoO365

Office 365 and Modern Workplaces: Please follow my publication https://medium.com/echoo365 for Microsoft 365 & Power Platform Blog (In Thai)