Apply to each (หรือที่รู้จักในชื่อ “For each loop”) คือการสั่งให้โปรแกรมทำงานซ้ำกับ ทุกๆ รายการ ที่อยู่ในชุดข้อมูล (Collection) หรืออาร์เรย์ (Array) โดยจำนวนรอบของการทำงานจะเท่ากับจำนวนของข้อมูลที่มีอยู่
หลักการสำคัญ:
- ทำงานกับชุดข้อมูล: ต้องมีชุดข้อมูล (เช่น รายชื่ออีเมล, รายการไฟล์, แถวในตาราง Excel) เป็นตัวตั้งต้น
- ทำครบทุกรายการ: การวนลูปจะเกิดขึ้นกับทุกรายการในชุดข้อมูลนั้นตั้งแต่รายการแรกจนถึงรายการสุดท้าย
- จำนวนรอบที่แน่นอน: เรารู้ล่วงหน้าว่าลูปจะทำงานกี่รอบ ซึ่งก็คือจำนวนรายการทั้งหมดในชุดข้อมูล


ตัวอย่าง: สมมติว่าเรามีรายชื่ออีเมลของพนักงาน 3 คนบน excel file
เมื่อใช้ Apply to each เพื่อ “ส่งอีเมลแจ้งข่าวสาร” การทำงานจะเป็นดังนี้:
- รอบที่ 1: ส่งอีเมลไปที่
toey_rrt@hotmail.com - รอบที่ 2: ส่งอีเมลไปที่ sathidchi@gmail.com
- รอบที่ 3: ส่งอีเมลไปที่
sathid_chi@outlook.com
ลูปจะสิ้นสุดลงเมื่อทำงานครบทั้ง 3 รายการ
Do until: ทำซ้ำจนกว่าเงื่อนไขจะบรรลุผล
Do until คือการสั่งให้โปรแกรมทำงานซ้ำไปเรื่อยๆ จนกว่าเงื่อนไข (Condition) ที่กำหนดไว้จะเป็นจริง การวนลูปจะหยุดเมื่อเงื่อนไขนั้นได้รับการตอบสนอง
หลักการสำคัญ:
- ทำงานตามเงื่อนไข: ไม่ได้ขึ้นอยู่กับชุดข้อมูล แต่ขึ้นอยู่กับเงื่อนไขที่ตั้งไว้
- จำนวนรอบที่ไม่แน่นอน: เราไม่สามารถรู้จำนวนรอบที่ชัดเจนล่วงหน้าได้ ลูปจะทำงานไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นจริง
- ต้องมีการเปลี่ยนแปลงค่า: ภายในลูป จะต้องมีการกระทำบางอย่างที่ส่งผลให้ค่าที่ใช้ในเงื่อนไขมีการเปลี่ยนแปลง เพื่อให้ลูปสามารถสิ้นสุดได้ มิฉะนั้นอาจเกิดเป็น “ลูปไม่สิ้นสุด” (Infinite Loop)
สถานการณ์ที่เหมาะสมกับการใช้ Do until:
- การรอการอนุมัติ: ส่งคำขออนุมัติและวนลูปตรวจสอบสถานะไปเรื่อยๆ จนกว่าสถานะจะเปลี่ยนเป็น “อนุมัติ” หรือ “ปฏิเสธ”
- การเรียกใช้ API จนกว่าจะได้ข้อมูลที่ต้องการ: เรียกใช้ API เพื่อดึงข้อมูล และหากข้อมูลที่ได้ยังไม่สมบูรณ์ ก็ให้วนลูปรอและเรียกใหม่อีกครั้งจนกว่าจะได้ข้อมูลครบถ้วน
- การทำงานจนกว่าจะถึงค่าเป้าหมาย: เช่น การบวกเลขไปเรื่อยๆ จนกว่าผลรวมจะมากกว่า 100
ตัวอย่าง: สมมติว่าเราต้องการรอให้สถานะของเอกสารในระบบเปลี่ยนเป็น “Approved”
เราสามารถใช้ Do until โดยตั้งเงื่อนไขว่า “ให้ทำซ้ำไปเรื่อยๆ จนกว่า (Do until) สถานะของเอกสาร (Status) จะเท่ากับ ‘Approved’”
การทำงานจะเป็นดังนี้:
- เริ่มต้น: สถานะเอกสารคือ “Pending”
- รอบที่ 1:
- ตรวจสอบสถานะ -> ยังเป็น “Pending” (เงื่อนไขเป็นเท็จ)
- รอ 5 นาที แล้วเริ่มรอบใหม่
- รอบที่ 2:
- ตรวจสอบสถานะ -> ยังเป็น “Pending” (เงื่อนไขเป็นเท็จ)
- รอ 5 นาที แล้วเริ่มรอบใหม่
- …รอบที่ n:
- ผู้จัดการอนุมัติเอกสาร สถานะเปลี่ยนเป็น “Approved”
- ตรวจสอบสถานะ -> เป็น “Approved” (เงื่อนไขเป็นจริง)
- สิ้นสุดการวนลูป และทำงานในขั้นตอนต่อไป

| คุณสมบัติ | Apply to each | Do until |
| จุดประสงค์หลัก | ทำงานกับทุกรายการในชุดข้อมูล | ทำงานซ้ำจนกว่าเงื่อนไขจะเป็นจริง |
| ปัจจัยในการวนลูป | จำนวนรายการในอาร์เรย์/ชุดข้อมูล | เงื่อนไขที่กำหนด |
| จำนวนรอบ | แน่นอน (เท่ากับจำนวนรายการ) | ไม่แน่นอน |
| การสิ้นสุดลูป | เมื่อทำงานครบทุกรายการ | เมื่อเงื่อนไขที่กำหนดเป็นจริง |
| ตัวอย่างการใช้งาน | ส่งอีเมลหาทุกคนในลิสต์, บันทึกไฟล์แนบทั้งหมด | รอการอนุมัติ, เรียก API จนสำเร็จ, นับเลขจนถึงเป้าหมาย |
สรุป
Apply to each เหมาะสำหรับงานที่ต้องจัดการกับข้อมูลทีละชิ้นในชุดข้อมูลที่กำหนดไว้แล้ว
Do until เหมาะสำหรับกระบวนการที่ต้องรอคอยหรือทำซ้ำไปเรื่อยๆ จนกว่าจะเกิดสภาวะบางอย่างที่เราต้องการ การเลือกใช้เครื่องมือที่ถูกต้องจะช่วยให้การสร้าง Workflow อัตโนมัติของคุณมีประสิทธิภาพและตรงตามความต้องการมากที่สุด

ดูวิธีการทำงานบน ของ Apply to each และ Do until บน Youtube ได้เลยครับ

Leave a comment