ในบทความที่แล้วเราได้ทำการอ่านรายชื่อหุ้นออกมาจาก Excel กันแล้ว ในบทความนี้เราจะมาดูกันต่อว่าเราจะประมวลผลหุ้นแต่ละตัวยังไงกันบ้าง โดยรูปข้างล่างจะแสดงว่าขั้นตอนการประมวลผลหุ้นแต่ละตัว
Action #6: Set variable – ในขั้นตอนนี้เราทำการกำหนดตัวแปรชื่อ Symbol เพื่อให้เราไม่สับสนว่ามันคือค่าอะไรเท่านั้น ในความเป็นจริงเราสามารถตัดขั้นตอนนี้ทิ้งไปได้เลยแล้วอ้างอิงชื่อตัวแปร ExcelRow แทน หรือจะให้ดีไปกว่านั้นในขั้นตอนที่ 5 เราสามารถกำหนดพารามิเตอร์ Store into เป็น Symbol ไปเลยก็ได้
Action # | 6 |
Action | Set variable |
Variable | Symbol |
Value | %ExcelRow% |
Action #7: Launch new Microsoft Edge – ในขั้นตอนนี้ให้ทำการเปิด browser ขึ้นมาโดยเราใช้ Microsoft Edge ในตัวอย่างนี้เพราะคิดว่าทุกเครื่องที่มี Power Automate Desktop น่าจะมี Microsoft Edge อยู่แล้ว แต่หากท่านจะใช้ Google Chrome ก็ได้เหมือนกัน
จุดสำคัญของขั้นตอนนี้คือการกำหนดเว็บไซต์และแทรกตัวแปร Symbol เข้าไปเพื่อให้การเปิดเว็บไซต์ในการวนลูปแต่ละรอบนั้นอ้างอิงถึงหุ้นที่เราสนใจได้ถูกต้อง โดยเราจะดึงข้อมูล factsheet ของหุ้นจากเว็บไซต์ของตลาดหลักทรัพย์ตัวอย่างเช่น PTT – Factsheet – The Stock Exchange of Thailand (set.or.th)
Action # | 7 |
Action | Launch new Microsoft Edge |
Launch mode | Launch new Instance |
Initial URL | https://www.set.or.th/en/market/product/stock/quote/%Symbol%/factsheet |
Window state | Maximized |
Variables produced | Browser |
Action #8: Extract data from web page – ขั้นตอนนี้จะมีความแตกต่างจากขั้นตอนอื่นๆเล็กน้อยเพราะเราจะไม่ได้ทำการเลือกค่าพารามิเตอร์บนฟอร์มเท่านั้นแต่เราจะทำการเลือกค่าที่สนใจจากหน้าเว็บ โดยอันดับแรกให้เลือกแอคชั่น Extract data from web page มาใส่ใน Flow ของเรา
จากนั้นเปิด action ขึ้นมาจะเห็นมันเขียนระบุให้เราทำ live web helper ได้ โดยให้เราเปิดหน้าเว็บเป้าหมายขึ้นมาอยู่บน foreground จากนั้นจะเห็นว่าหากเราเลื่อนเมาส์ไปตรงไหนก็ตามจะมีกรอบสีแดงระบุเอาไว้ให้รู้ว่าข้อมูลที่ได้จะเป็นอะไรบ้าง เมื่อเราได้จุดที่เราสนใจแล้วก็ให้เราคลิกขวา แล้วเลือก Extract element value แล้วเลือก Text จากนั้นกด Finish
ถึงขั้นตอนนี้หากเราลองรัน Flow ดูจะได้ผลลัพธ์ของ DataFromWebPage ดังรูปด้านล่าง
Action #9: Set variable – ขั้นตอนนี้ก็คล้ายๆกับขั้นตอนที่ 6 คือ การกำหนดชื่อตัวแปรเพื่อให้ Flow ของเราอ่านง่ายขึ้นเท่านั้น โดยเราจะนำค่าที่ได้จากการอ่านค่าใน web มาใส่ลงตัวแปรชื่อ StockSummary แต่ค่าที่อ่านมาและเก็บอยู่ใน DataFromWebPage จะมีข้อมูลเป็นประเภทตาราง ดังนั้นเราต้องอ่านค่าจาก DataFromWebPage[0][0]
Action # | 9 |
Action | Set variable |
Variable | StockSummary |
Value | %DataFromWebPage[0][0]% |
Action #10: Split text – จากนั้นเราจะทำการแยกค่าของ StockSummary ออกมาเป็น list โดยการตัดด้วย New line character (ตัวขึ้นบรรทัดใหม่)
Action # | 10 |
Action | Split text |
Text to split | %StockSummary% |
Delimiter type | Standard |
Standard delimiter | New line |
Times | 1 |
Variables produced | TextList |
Action 11: For each – ให้เราวนลูปรอบ TextList เพื่อจะมาอ่านค่าที่เราสนใจกรอกใส่ Excel
Action # | 11 |
Action | For each |
Value to iterate | %TextList% |
Store into | CurrentItem |
รูปด้านล่างแสดง flow ที่เราจะทำการวนอ่านค่ามาแล้วเขียนกลับเข้า Excel
Action #12: Parse text – ในขั้นตอนนี้เราจะใช้ Regular Expression เพื่อเลือกอ่านค่าจาก text ที่ได้มาโดยเราจะสนใจแค่ค่าที่เป็นตัวเลขในรูปแบบ ###.## เท่านั้น โดยจะมีจำนวนตัวเลขกี่ตัวก็ได้
Action # | 12 |
Action | Parse text |
Text to parse | %CurrentItem% |
Text to find | [0-9]+.[0-9]+$ |
Is regular expression | Checked |
Start parsing at position | 0 |
First occurrence only | Checked |
Ignore case | Checked |
Variables produced | Position, Match |
ตัวแปร Position ซึ่งเป็นผลลัพธ์จากการ Parse text ซึ่งถ้าหาก Parse text เจอค่าที่เป็นตัวเลขจะได้ Position ออกมาเป็นตำแหน่งที่เจอซึ่งจะมีค่ามากกว่าหรือเท่ากับศูนย์ หากว่าไม่เจอจะได้ผลลัพธ์มาเป็น -1 ในกรณีนี้เราสนใจแค่กรณีที่เจอตัวเลขเท่านั้นดังนั้น ใน Action ที่ 13 เราจึงใช้ condition ให้ทำงานเมื่อ Position >= 0 เท่านั้น
Action #14: เราทำการเปลี่ยน Match ให้เป็นตัวเลขเพื่อให้เขียนค่าตัวเลขไปบน excel โดย Match คือผลลัพธ์ที่ได้จากการ Parse text ซึ่งจะเป็นแค่ตัวเลขที่เราสนใจเท่านั้นและตัดตัวอักษรออกทั้งหมด
Action #15: เราใช้คำสั่ง Switch เพื่อเลือกว่าค่าปัจจุบันในลูปเป็นค่าอะไร จากในตัวอย่างของเรา เราสนใจค่า EV/EBITDA, Price, P/E และ P/BV ดังนั้นเราจะเช็คดูว่าค่าที่วนลูปอยู่ปัจจุบันคืออะไรแล้วเลือกใส่ข้อมูลลงใน Excel ตามค่าที่เป็น ตัวอย่างเช่น การใส่ค่า EV/EBITDA จะใช้ Action Case ตัวตัวอย่างข้างล่าง
Action # | 16 |
Action | Case |
Operator | Contains |
Value to compare | EV/EBITDA |
Ignore case | Checked |
Action # | 17 |
Action | Write to Excel worksheet |
Excel instance | %ExcelInstance% |
Value to write | %NumberValue% |
Write mode | On specified cell |
Column | B |
Row | %CurrentExcelRow% |
จากตัวอย่างของ Switch/case สำหรับ EV/EBITDA เราจะหาข้อมูลบรรทัดที่มีคำว่า EV/EBITDA ถ้าหากใช่ เราก็จะทำการเขียนค่าตัวเลขที่เรา parse เอาไว้ลง Excel คอลัมน์ B ซึ่งเป็นคอลัมน์ที่เราระบุไว้ก่อนนี้สำหรับ EV/EBITDA จากนั้นให้เราทำแบบเดียวกันกับ Price, P/E และ P/BV
เมื่อประมวลผลหุ้นจบไปหนึ่งตัวก็ให้เราปิด Browser ไปโดยใช้แอคชั่น Close web browser และจากนั้นอย่าลืมเพิ่มค่า CurrentExcelRow เพื่อที่เราจะได้ขยับ cursor ของเรามาเขียน excel ในบรรทัดถัดไปโดยใช้แอคชั่น Increase variable
ขั้นตอนสุดท้ายหลังจากวนลูปอ่านหุ้นทุกตัวหมดแล้วก็ให้เราทำการปิด Excel ด้วยการใช้แอคชั่น Close Excel แล้วเลือกที่จะ Save ไฟล์ด้วย เพียงเท่านี้เราก็จะได้ตารางข้อมูลหุ้นที่เราต้องการโดยไม่ต้องมานั่งเสียเวลาใส่เองอีกแล้ว
ก็จบกันไปแล้วสำหรับบทความสอนการใช้ Power Automate Desktop ช่วยไรอ่านข้อมูลจากเว็บมาใส่ลง Excel หวังว่าบทความนี้จะเป็นประโยชน์กับหลายๆคนนะครับ หากมีคำถามหรือข้อชี้แนะอะไรก็ใส่มาใน comment ได้เลยนะครับ