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

จุดมุงหมายคือการสร้างระบบแจ้งเตือนว่ารายไหนที่มีวันหมดประกันเหลือไม่ถึง 60 วัน เพื่อให้เจ้าหน้าที่รับทราบแล้วสามารถจัดการกับรายการสิ่งของสิ่งนั้นต่อไปได้
แต่ก่อนจะทำระบบ Automate เราจะต้องรู้ขั้นตอนการทำงานแบบ Manual ก่อน จะต้องเขียนให้เป็นั้นตอนซะก่อน ในตัวอย่างนี้จะมีขั้นตอนดังนี้
- ดึงข้อมูล
- ตรจวสอบว่ารายการไหนมีวันหมดอายุไม่ถึง 60 วัน
- ส่งเมลล์แจ้งเตือน
เมื่อเราสามารถระบุขั้นตอนการทำงานต่างๆ แล้ว ก็มาเริ่มเขียน 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 หรือ มากกว่าก็ได้ แต่ว่าอยากให้ถี่ขนาดไหน

ขั้นตอนที่ 2 ดึงข้อมูลจาก List
ให้คลิกไปที่ New step

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

Site Address: เลือก SharePoint ของเรา
List Name: เลือก Simple Inventory List หรือลิตส์ที่เพื่อนๆ สร้าง
ถ้าเพื่อนๆ ไม่เห็น Site ของตัวเองแสดงว่าไม่ได้สร้างลิสต์ไว้ใน SharePoint ของตัวเองนะ
จบขั้นตอนนี้เพื่อนได้ดึงข้อมูลจากลิสต์สำเร็จแล้ว ขั้นตอนต่อไปนำข้อมูลในลิสต์มาตรวจสอบว่ามีรายการไหนที่มีวันหมดอายุน้อยกว่า 60 วันบ้าง

เมื่อ 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 แบบรูปด้านล่าง

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

จากตรงนี้ผมไม่บอกว่าต้องค้าหายังไง คิดว่าน่าจะค้นหา 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

ตอนนี้เรารู้จำนวนวันที่เหลือได้แล้ว ขั้นตอนต่อไปมาเขียนเงื่อนไขกัน
ขั้นตอนที่ 4 Condition Flow
Add an action Condition ช่อง Choose value เลือกตัวแปร DateDifference ตรงช่องกลางเลือกเป็น Is less than ที่แปลว่าน้อยกว่า ส่วนช่องขวาใส่ 60
เราจะตรวจสอบว่า ตัวแปร DateDifference น้อยว่า 60 หรือไม่

ขั้นตอนที่ 5 ส่งอีเมลล์แจ้งเตือน เมื่อเงื่อนไขเป็นจริง
มาตรงช่อง If yes ให้เพิ่ม Action ที่ชื่อว่า Send an email notification (V3)

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

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

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