Power Automate

สร้างอีเมลล์แจ้งเตือนด้วย Power Automate 2021


บทความนี้เป็นการสอนการสร้างสร้างอีเมลล์แจ้งเตือนด้วย Power Automate โดยเป็นการตรวจสอบวันที่หมดอายุของรายการที่บันทึกด้วย Microsoft List

สร้างอีเมลล์แจ้งเตือนด้วย Power Automate

Simple List - สร้างอีเมลล์แจ้งเตือนด้วย Power Automate
List สำหรับเก็บข้อมูลทรัพสินพร้อมกับวันหมดประกัน

จุดมุงหมายคือการสร้างระบบแจ้งเตือนว่ารายไหนที่มีวันหมดประกันเหลือไม่ถึง 60 วัน เพื่อให้เจ้าหน้าที่รับทราบแล้วสามารถจัดการกับรายการสิ่งของสิ่งนั้นต่อไปได้

แต่ก่อนจะทำระบบ Automate เราจะต้องรู้ขั้นตอนการทำงานแบบ Manual ก่อน จะต้องเขียนให้เป็นั้นตอนซะก่อน ในตัวอย่างนี้จะมีขั้นตอนดังนี้

  1. ดึงข้อมูล
  2. ตรจวสอบว่ารายการไหนมีวันหมดอายุไม่ถึง 60 วัน
  3. ส่งเมลล์แจ้งเตือน

เมื่อเราสามารถระบุขั้นตอนการทำงานต่างๆ แล้ว ก็มาเริ่มเขียน Work Flow ได้เลย

ขั้นตอนที่ 1 สร้าง Flow

กดไปที่เมนู Automate — Power Automate — Create a flow — see your flow
แล้วคลิกที่ New flow — Scheduled cloud flow
Flow name: Warranty Remind
Run this flow: ยังไม่ต้องเปลี่ยน เอาไว้สร้างเสร็จแล้วค่อยกลับมาเปลี่ยนภายหลัง
Repeat every: 1 Day หรือ มากกว่าก็ได้ แต่ว่าอยากให้ถี่ขนาดไหน

Create flow dialog
Create flow dialog

ขั้นตอนที่ 2 ดึงข้อมูลจาก List

ให้คลิกไปที่ New step

Recurrent step - อีเมลล์แจ้งเตือนด้วย Power Automate
Start flow

ช่องค้นหาพิมพ์คำว่า Get ในช่องข้างล่างให้เลือก Get items ดูดีดีนะ มันมีแบบมี s กับไม่มี s เราจะดึงข้อมูลในลิสต์ที่มีข้อมูลเยอะๆ จะต้องใช้ Get items ไม่งงเนอะ

Action Get items - อีเมลล์แจ้งเตือนด้วย Power Automate

Site Address: เลือก SharePoint ของเรา
List Name: เลือก Simple Inventory List หรือลิตส์ที่เพื่อนๆ สร้าง

ถ้าเพื่อนๆ ไม่เห็น Site ของตัวเองแสดงว่าไม่ได้สร้างลิสต์ไว้ใน SharePoint ของตัวเองนะ

จบขั้นตอนนี้เพื่อนได้ดึงข้อมูลจากลิสต์สำเร็จแล้ว ขั้นตอนต่อไปนำข้อมูลในลิสต์มาตรวจสอบว่ามีรายการไหนที่มีวันหมดอายุน้อยกว่า 60 วันบ้าง

Config Get item - อีเมลล์แจ้งเตือนด้วย Power Automate
Get items dialog

เมื่อ Get items ข้าวบนทำงานเราจะได้ข้อมูลลิสต์เป็นแบบ Object มา เราจะต้องเรียกใช้ Get item เพื่อเรียกข้อมูลมาทำการประมวลผลทีละแถว

New step อีกครับ ครั้งนี้ค้นหาคำว่า each แล้วเลือก Apply to each (นำข้อมูลมาประมาวลผลทีละอันจนกว่าจะครบ) ช่อง Select an output from previous step เลือก value

จากนั้น Add an action Get Item แล้วระบุ Site address กับ List เหมือนกับ Get Items ก่อนหน้านี้ แต่อันนี้จะมีช่อง Id ให้เพื่อนๆ ระบุ Id แบบรูปด้านล่าง

Get item by Id - อีเมลล์แจ้งเตือนด้วย Power Automate
Get Item Dialog

ขั้นตอนที่ 3 คำนวณหาจำนวนวันที่เหลือ

ให้เพื่อนสร้างตัวแปรเพื่อเก็บคำตอบที่เราได้จากการคำนวณ คลิกที่เครื่องหมาย + ระหว่าง Recurrence กับ Get Items แล้วค้นหาคำว่า var แล้วเลือก Initialize variable ตั้งชื่อตัวแปร (Name) “DateDifference” ประเภทตัวแปร (Type) เป็น Integer

Create Variable - อีเมลล์แจ้งเตือนด้วย Power Automate

จากตรงนี้ผมไม่บอกว่าต้องค้าหายังไง คิดว่าน่าจะค้นหา Step หรือ Action กันได้แล้วเนอะ

แล้วให้ Add an action ที่ชื่อว่า Set Variable ตรงชื่อตัวแปรให้เพื่อนๆ เลือก DateDifferance ที่สร้างไว้ในตอนแรก

เริ่มทฤษฎีกัน สูตรง่ายๆ คือ เอากำหนดวันหมดอายุ – วันที่ปัจจุบัน = จำนวนวันที่เหลือ

แต่เราจะเอาวันที่มาลบกันตรงๆ ไม่ได้ จะต้องใช้ Function อื่นๆ เข้ามาช่วย

Function ที่เกี่ยวข้อง

Function ticks(timestamp: string) ทำหน้าที่แปรงวันที่เป็นหน่วยของเวลาที่เล็กที่สุด

Function sub(number1: integer, number2: integer) ชื่อเต็มคือ Subtraction คือ นำเลขสองจำนวนมาลบกัน

Function div(number, Division number) ชื่อเต็มคือ Division ที่หมายถึงการนั้นเอง

Function utcNow() สำหรับเรียกวันที่ปัจจุบัน

เพื่อนๆ จะต้องใช้ function ticks เพื่อแปรวันที่ที่เป็นข้อมมูลแบบ string ให้เป็นแบบตัวเลขหรือ integer แล้วนำมาหาผลต่างกันด้วย function sub เมื่อได้ผลต่างแล้วนำตัวเลขที่แปรงมาจาก ticks กลับมาเป็นจำนวนวัน หรือเดือน หรือปี ด้วย function div

ตัวหารที่ใช้แปรงค่า ticks
ค่า ticks ต่อวัน 864,000,000,000
ค่า ticks ต่อชั่วโมง 36,000,000,000
Tค่า ticks ต่อนาที 600,000,000
ค่า ticks ต่อวินาที 10,000,000
ค่า ticks ต่อเสียววินาที 10,000

เราจะต้องเขียน Expression กันแล้ว ถ้ายังไม่ชำนานให้เปิด NotePad ขึ้นมา ลองเขียนตามที่ละขั้นตอน

1. ticks(utcNow()) //แปรงวันที่ปัจจุบันเป็นค่า ticks
2. ticks(outputs('Get_item')?['body/WarrantyExpires']) //แปลงวันหมดอายุเป็นค่า ticks 
3. sub(ticks(outputs('Get_item')?['body/WarrantyExpires']), ticks(utcNow())) //นำ function ticks ไปใส่ใน function sub
4. div(sub(ticks(outputs('Get_item')?['body/WarrantyExpires']), ticks(utcNow())), 864000000000) //นำ function sub ไปใส่ไว้ใน function div

*outputs('Get_item')?['body/WarrantyExpires'] อันนี้มันมีกดเลือกว่าเอาคอลัมน์อะไรมาใช้ ไม่ต้องกังวลนะ

Expression สุดท้ายจะได้เป็น
div(sub(ticks(outputs(‘Get_item’)?[‘body/WarrantyExpires’]), ticks(utcNow())), 864000000000)

คราวนี้กลับมาที่ Set variable คลิกที่ช่อง Value แล้วจะมีหน้าต่าง Expression ปรากฎขึ้นมา ให้เพื่อนๆ คลิกที่แท็บ Expression วางสูตรที่เราเขียนกัน แล้วกดปุ่ม OK

Variable expression - อีเมลล์แจ้งเตือนด้วย Power Automate
Expression

ตอนนี้เรารู้จำนวนวันที่เหลือได้แล้ว ขั้นตอนต่อไปมาเขียนเงื่อนไขกัน

ขั้นตอนที่ 4 Condition Flow

Add an action Condition ช่อง Choose value เลือกตัวแปร DateDifference ตรงช่องกลางเลือกเป็น Is less than ที่แปลว่าน้อยกว่า ส่วนช่องขวาใส่ 60

เราจะตรวจสอบว่า ตัวแปร DateDifference น้อยว่า 60 หรือไม่

Condition - อีเมลล์แจ้งเตือนด้วย Power Automate
Condition flow

ขั้นตอนที่ 5 ส่งอีเมลล์แจ้งเตือน เมื่อเงื่อนไขเป็นจริง

มาตรงช่อง If yes ให้เพิ่ม Action ที่ชื่อว่า Send an email notification (V3)

Action email notification - อีเมลล์แจ้งเตือนด้วย Power Automate

ให้เพื่อๆ ระบุ ว่าจะส่งอีเมลล์หาใครก็ได้ สามารถระบุรายละเอียดต่างและสามารถเรียกใช้ตัวแปรต่างๆ ได้อีกด้วย

Email notification - อีเมลล์แจ้งเตือนด้วย Power Automate

ให้เพื่อนลองกด Test เพื่อทดสอบ flow ถ้า flow ของเราทำงานตามที่สั่งไว้เราจะได้รับอีเมลล์แบบในรูปด้านล่าง

Email result - อีเมลล์แจ้งเตือนด้วย Power Automate

ก็สำเร็จไปแล้วกับการสร้าง Automate แบบง่ายๆ บทต่อไปจะต่อยอดจากของเดิมโดยเราจะกำหนดได้ว่ารายการไหนที่ต้องการให้มีการมินิเตอร์ แะลกำหนดได้ว่าจะส่งให้ใครบ้าง

Complete flow

Complete flow - อีเมลล์แจ้งเตือนด้วย Power Automate