Export Power Apps data to Excel (CSV) แบบอ่านภาษาไทยได้

Export Power Apps data to Excel (CSV)

หนึ่งในปัญหาหลักของผู้ใช้ ในบางครั้งที่ต้องการ Export ข้อมูลจาก Power Apps ออกมาในรูปแบบ Excel เพื่อนำไปวิเคราะห์ต่อ หรือแชร์ข้อมูลกับผู้อื่น แต่ปัญหามันอยู่ตรงที่ว่า เมื่อข้อมูลดันเป็นภาษาไทย พอทำการ Export ออกมาในรูปแบบ Excel (CSV) จะได้ภาษาต่างดาว โดยบทความนี้จะมาไล่เรียงตั้งแต่การสร้างปุ่ม Export ข้อมูลจาก Power Apps ออกมาในรูปแบบ Excel (CSV) แบบอ่านภาษาไทยได้ปกติ

Export Power Apps data to Excel (CSV)

สร้างปุ่ม Download ใน Power Apps

Create new flow เพื่อทำการเชื่อมต่อ Power Apps กัย Power Automate เมื่อเราทำการ Click ที่ปุ่ม Download หรือ Export ที่เราสร้างมา โดยในบทความนี้ผู้เขียนจะขอตั้งชื่อ Flow นี้ว่า “Export2Excel”

Action1: PowerApps (V2)

ใส่ตัวแปร Jsoninput เข้าไปเพื่อรับค่าและส่งต่อไปที่ Action ต่อไปะ

Action2: Content

Add action “Content” และใส่ inputs เป็น body ของ Jsoninput ที่ได้จาก Action1: PowerApps (V2)

Action3: Create CSV table

Add action “Create CSV table” และใส่ input เป็นผลลัพธ์ของ Action2: Content ที่เราเตรียมจะมาแปลงเป็น json และ create เป็น CSV table

json(outputs('Content'))

Action4: Create file

มาถึงในส่วนสำคัญ นั้นคือการนำข้อมูล CSV table มาทำการสร้างไฟล์ และทำให้ข้อมูลข้างในเป็นภาษาไทย โดยใน Action นี้ เราจะใส่ข้อมูลเข้าไปด้วยกัน 3 อย่าง

  • Folder Path: เลือกที่อยู่จัดเก็บไฟล์
  • File Name: ชื่อไฟล์ที่จะสร้าง โดยในบทความนี้จะขอตั้งชื่อเป็น utcNow() **อย่าลืม .csv นะ
  • File Content: ปกติก็จะใส่ในส่วนของ outputs CSV table แต่พอเราต้องการให้เปลี่ยนจากภาษาต่างดาวเป็นภาษาไทย เราจำเป็นต้องระบุ UTF8 %EF%BB%BF ให้กับมันด้วย
concat(uriComponentToString('%EF%BB%BF'),body('Create_CSV_table'))

Action5: Create share link

หลังจากที่สร้างไฟล์และเก็บบน OneDrive เรียบร้อยแล้ว เราก็ต้องมาทำการแชร์ไฟล์นี้ เพื่อให้ เมื่อกดปุ่ม Download บน PowerApps ได้

Action6: Respond to a PowerApp or flow

สุดท้ายคือ Action ที่จะส่งตัวแปรต่างๆ กลับไปที่ PowerApps โดยเราจะส่งตัวแปรหลักๆ 2 ตัว คือ PathFile และ FileLink เพื่อทำการ Download หรือ Launch ในฝั่งของ PowerApps ต่อไป

Power Apps

กลับมาที่ Power Apps ซึ่งเราจะทำการทดสอบ Flow เพื่อทำความเข้าใจในแต่ละจุด โดยให้ใส่ code ด้านล่างที่ปุ่ม Download หรือ Export ที่เราสร้างมาในโหมด OnSelect

// Run PowerAutomate โดยใช้ฐานข้อมูล colLegalRequest
Export2Excel.Run(JSON(colLegalRequest, JSONFormat.IncludeBinaryData & JSONFormat.IgnoreUnsupportedTypes))

จากโค้ดด้านบนถ้าทดสอบเราจะได้แค่การสั่ง Run Flow ปกติ แต่เราจะได้ไฟล์ที่ถูก export ออกมาแล้วในรูปแบบภาษาไทยเก็บไว้ใน OneDrive โดยสามารถเข้าไปดูได้ที่ Path ที่เราได้ตั้งค่าไว้ใน Flow

ซึ่งบทความนี้เราตั้งใจจะทำการ Download Files นี้ด้วย เพราะฉะนั้นแล้วเราต้องนำตัวแปรที่ Flow ของเราทำเสร็จ (PathFile และ FileLink) มาใช้ในการ Download เราจึงต้อง set ตัวแปรมารับค่า ตาม code ด้านล่างเลย

// ตั้งค่าตัวแปร varPathLink มารับค่า pathfile
Set(varPathLink,Export2Excel.Run(JSON(colLegalRequest, JSONFormat.IncludeBinaryData & JSONFormat.IgnoreUnsupportedTypes)).pathfile);

สำหรับการ Donwload จาก URL ที่เชื่อมต่อกับตัวแปร varPathLink

// Download file
Download("https://rcairlines-my.sharepoint.com/personal/<address sharepoint email>/Documents"&varPathLink);

สำหรับการ Launch จาก link ตัวแปร varFileLink

// Launch file
Launch(varFileLink);

ทำการทดสอบ ถ้าไม่มีอะไรผิดพลาดเราจะ Download ไฟล์ที่ถูก Export มาจากฐานข้อมูลได้ และถ้าเป็นภาษาไทยก็จะโชว์ปกติ ไม่ติดเป็นภาษาต่างดาว

เพิ่มเติม (Export data from Gallery item)

แน่นอนว่าในหลายๆ Project เราจะมีการ Filter ฐานข้อมูลและอยากจะ Export ข้อมูลมาในรูปแบบที่ทำการ Filter แล้ว และไม่ได้จบเพียงแค่ Filter โดยในฐานข้อมูลที่จัดเก็บ Columns เยอะแยะมากมาย เราก็คงไม่อยากจะให้ Export มาทุก Columns ด้วยเช่นกัน (เนื้อหาข้างบนจะเป็นการ Export data ทั้งหมดทุก Rows และทุก Columns จากฐานข้อมูล)

// สร้างฐานข้อมูล colDataExported อ้างอิงจาก Gallery1_3.AllItems (ที่โชว์อยู่ในขณะนั้น) โดยเอามาแค่ที่ระบุไว้
ForAll(Gallery1_3.AllItems,Collect(colDataExported, {
    CreateBy: ThisRecord.'Created By',
    RequestID: ThisRecord.Title,
    CounterpartyName: ThisRecord.'Counterparty Name',
    Department: ThisRecord.Department
    }
));

// .... คำสั่ง Run Automate
// .... คำสั่ง Download

// Clear ฐานข้อมูล เพื่อครั้งหน้าจะได้ไม่ติดข้อมูลเก่า
Clear(colDataExported);

นำโค้ดข้างบนไปใส่ไว้ในปุ่ม Download โดย Gallery1_3 นักพัฒนาต้องเปลี่ยนตัวแปรนี้ตาม id gallery ที่ตัวเองสร้างหรือที่ตัวเองต้องการนำมา export


จบไปแล้วสำหรับการทำปุ่มใน Power Apps ให้ Export data เป็น excel (CSV) ในรูปแบบภาษาไทย ต้องบอกเลยว่า Automate Flow นี้ ถูกใช้งานบ่อยมากในหลายๆ Project เพราะว่าหลายๆ คน ก็ต้องการ Export ข้อมูลและทำการ Download

0