Author: thichaluk.s

  • สร้างไฟล์ PDF จาก Google sheet ที่ใส่รูปได้ ด้วย Library PdfService

    สมมติเรามีแบบสอบถามที่เก็บรูปภาพของผู้กรอกด้วย และเราต้องการให้มัน Gen ข้อมูลที่กรอกเป็น pdf เก็บไว้ แนว ๆ ทำเป็นใบสมัครออกมา มาดูขั้นตอนวิธีทำกันเลย บอกเลยว่าไม่ยาก!!! เริ่มกันเลย

    1. ไปที่ Google Drive ของเรา สร้าง Folder จัดเก็บงาน ในที่นี่ชื่อ PDF Test

    2.สร้าง Form ขึ้นมา 1 form เก็บข้อมูล ดังรูป ชื่อ สกุล อีเมล เบอร์โทร รูป (ทำเป็นอัปโหลดไฟล์)

    3.คลิกแสดงตัวอย่างที่ลูกตา แล้วลองใส่ข้อมูลทดสอบ

    4.ดูตัวอย่างข้อมูลที่แท็บการตอบกลับ

    5.คลิกปุ่ม สร้างสเปรตชีต จะเห็นข้อมูลตัวอย่างที่เราได้กรอกแบบฟอร์มเข้าไป

    จากนั้นนำข้อมูลนี้ไปทำ pdf ได้อย่างไร

    1.ให้ไปที่เมนูเครื่องมือ > โปรแกรมแก้ไขสคริปต์ > ทรัพยากร > ไลบรารี ที่ Add a library ให้ใส่ 1iePjnglUzelAuJJb-QykRcUUWYBSKiNGUWVljnNe03G9zWzSUGIRWLXa แล้วกดปุ่มเพิ่ม

    2.เราจะเห็น PdfService ให้ระบุเป็น Version ล่าสุด จากนั้นกดปุ่ม บันทึก

    ในที่นี้จะขอใช้ google slide เป็น Templete ในการออก PDF

    1.กลับไปที่ Google drive ที่ folder ที่เราได้สร้างไว้คือ PDF Test ให้คลิกขวา > Google สไลด์

    2. ตั้งค่าหน้า slide เป็นแนวตั้ง A4 ไปที่ ไฟล์ > ตั้งค่าหน้ากระดาษ > กำหนดเอง 21 * 29.7 cm

    3.เราต้องการออก PDF ที่เก็บรูปภาพด้วย เพราะมีการตอบรูปภาพเข้ามา ไปที่แทรก > รูปภาพ > อัปโหลดจากคอมพิวเตอร์ จะได้เป็นรูปที่เป็นแม่แบบ เราก็จัดวางตามที่เราต้องการว่าจะให้วางไว้ตรงส่วนไหน ขนาดกว้าง ยาวเท่าไหร่แล้วแต่เรากำหนด

    4.จากนั้นคลิกที่กล่องข้อความ สร้างตามรูป โดยในปีกกา {} ต้องเป็นชื่อเดียวกับฟิลด์ใน google sheet

    5.จากนั้นคลิกที่รูป ขวา > ข้อความแสดงแทน > ที่ชื่อเรื่องใส่ชื่อฟิลด์ที่ตรงกับช่องที่มีรูปภาพตามใน google sheet จากตัวอย่างในที่นี้จะเป็นคำว่า “รูปภาพ” จากนั้นคลิกปุ่มตกลง

    7. ไปที่ Google drive สร้าง folder ใหม่อีกอัน ซึ่งจะให้ไฟล์ PDF ถูกจัดเก็บเข้ามาในนี้ และ folder ที่อัปโหลดรูปในแบบสอบถาม PDF Test (File responses) จะต้องแชร์ folder นี้ด้วย (คลิกขวา แชร์ ทุกคนที่มีลิงค์) ไม่อย่างนั้น script จะ error

    ไปที่ Google drive สร้าง folder ใหม่อีกอัน ซึ่งจะให้ไฟล์ PDF จะถูกเก็บเข้ามาในนี้ และ folder ที่อัปโหลดรูปในแบบสอบถามจะให้มาอยู่ใน folder PDF Test ที่เราได้สร้างไว้ตั้งแต่ตอนแรกสุด จะต้องแชร์ด้วย folder นี้ (คลิกขวา แชร์ ทุกคนที่มีลิงค์) ไม่อย่างไร script จะ error

    จากนั้นเรามาเขียน code กันเล็กน้อย

    จากรูป

    1.เป็น ID ของ google form ให้คัดลอกมาหลัง /d จนก่อนถึง /edit

    2.เป็น ID ของ google slide ให้คัดลอกมาหลัง /d จนก่อนถึง /edit

    3.เป็นชื่อ folder ที่จะเก็บไฟล์ PDF ที่ google สร้างอัตโนมัติให้เมื่อรัน code

    4.ชื่อของแผ่นงานใน google form

    5.ชื่อฟิลด์ที่เก็บรูปภาพตามใน google sheet ของเราใช้คำว่า “รูปภาพ”

    6.ต้องการให้ไฟล์ PDF แต่ละไฟล์มีชื่อว่าอะไร ในที่นี่ให้แสดงฟิลด์ชื่อและสกุล (ใส่ให้ตรงกับฟิลด์ที่เรากำหนดไว้) เสร็จแล้วอย่าลืมกดปุ่ม บันทึก

                จากนั้นมารันดูกันว่ามันจะสร้าง PDF ให้เรายังไง กดปุ่ม Play > ตรวจสอบสิทธิ์ > คลิกที่อีเมลของเรา > ขั้นสูง > ไปที่ PDF Test(ไม่ปลอดภัย) > อนุญาต จะแสดงข้อความว่า “Running function runPDF”

                รันผ่านเรียบร้อยดูจากบันทึกการดำเนินการด้านล่าง จากนั้นเราไปดู folder PDF-test กันเลย ชื่อไฟล์จะตามที่เราให้ดึงฟิลด์ชื่อสกุล

                เมื่อคลิกดูก็จะได้ไฟล์ PDF ที่มีข้อมูลตาม Google slide ที่เราได้ทำไว้ ดังรูป

    ลองกรอกข้อมูลเพิ่มอีกสักคน แล้วรัน script อีกครั้ง จากนั้นไปดูผลลัพธ์กัน

    เราสามารถสร้าง Trigger ให้มันทำงานอัตโนมัติ หรือสร้างเป็นปุ่มที่เรียก function นี้ได้ค่ะ

  • การนำรูป SVG มาใช้ใน PowerPoint แล้วเป็น animation

    สำหรับวันนี้จะมาแนะนำการสร้าง animation ใน powerpoint ด้วยรูป SVG กันค่ะ มาดูกันเลย

    1.เปิด power point ขึ้นมา แล้วคลิก Blank  Presentation

    2.เตรียมไฟล์ SVG ไว้ หรือหาใน google เอา หรือลิงค์ https://storyset.com เมื่อเลือกรูปได้แล้วให้ดาวน์โหลดเป็นไฟล์ SVG

    3.กลับมาที่ Power point ไปที่เมนู Insert > Picture > This Device เลือกไฟล์ SVG ที่เราเพิ่งดาวน์โหลดมา

    4.จากนั้นเราจะทำการ Convert รูป SVG นี้ให้เป็นรูปร่างก่อน วิธีการแปลง ไปที่เมนู Graphics Format > Convert to Shape

    5.จากนั้น คลิกเมาส์ขวา Group > Ungroup

    จากนั้นเราจะมาทำ animation ให้แต่ละรูป เนื่องจากทุกรูปแยกออกจากกันแล้ว เวลาเรารัน slide แล้วให้แต่ละรูปเล่น animation อยู่ตลอดเวลา มาดูกันว่าทำยังไง

    • เลือกรูปคนกลาง ไปที่เมนู Animations > Animation Pane เพื่อให้โชว์หน้าต่างภาพเคลื่อนไหวขึ้นมา เลือก More
    • Motion Paths > Lines รูปมันจะเลื่อนลง จากนั้นคลิกที่ Effect Options > Up เพื่อให้เด็กกระโดดขึ้นไป
    • จากนั้นคลิกที่ลูกศรที่ Animation Pane > With Previous
    • จากนั้นคลิกที่ลูกศรที่ Animation Pane > Effect Options
    • แท็บ Effect ติ๊กถูก Auto-reverse เพื่อให้กระโดดขึ้นกระโดดลงอยู่ตลอดเวลา แท็บ Timing ที่ Repeat เลือก Until End of Slide เพื่อให้ทำซ้ำ ๆ จนสิ้นสุด Slide แล้วคลิกปุ่ม “OK”
    • ทีนี้จะให้กระโดดขึ้นสูงต่ำแค่ไหน ให้สังเกตที่จุดสีแดง คลิกที่จุดสีแดง 1 ครั้ง วงกลมสีแดงคือจุดสุดท้าย สีเขียวคือจุดเริ่มต้น เราเลื่อนลงมาต่ำสักหน่อยเพื่อไม่ให้กระโดดสูงมาก จากนั้นคลิก Preview เพื่อแสดงตัวอย่าง
    • ถ้าอยากให้เคลื่อนเร็วกว่าเดิม ที่ Duration ให้ปรับเป็น 01.00 คือ 1 วินาที แล้วลอง Preview ดูตัวอย่าง
    • ให้ทั้ง3คนนี้กระโดดเหมือนกันให้คลิกตัวที่เราทำเสร็จแล้ว > Animation Painter หมายถึงว่ามันจะคัดลอกตัวที่เราเลือกอยู่ แล้วคลิกรูปที่เราต้องการให้เป็นเหมือนรูปแบบที่เราคัดลอกมา และทำรูปที่เหลือเหมือนกัน จะได้กระโดดกันทั้ง 3 คน
    • จากนั้นค่อยมาจัดลำดับ หน่วงเวลา เพื่อให้ทั้ง 3 คนดู smooth กำหนดที่ Delay คนทางซ้าย 00:25 ทางขวา 00.50 แล้วลอง Preview ดู

    นี่คือตัวอย่างการนำรูป SVG มาทำ animation ใน powerpoint ลองนำไปใช้กันดูนะคะ

  • อ่านข้อมูลจาก google sheet ด้วย API Service

    เมื่อมีการเก็บข้อมูลแบบสอบถาม ใน google form แล้วต้องการเอาข้อมูลจาก google sheet เพื่อมาตรวจสอบว่านักศึกษาหรือคนที่กรอกแบบสอบถามนั้น ได้ตอบแบบสอบถามไปรึยัง เพื่อนำมาตรวจสอบต่อกับเว็บไซต์หรือระบบของเราที่พัฒนาเอง เช่นนักศึกษาคนนี้กรอกแบบสอบถามรึยัง ถ้ากรอกแล้วจะสามารถดำเนินการต่อในระบบได้ ถ้ายังไม่กรอกต้องไปยังแบบสอบถามก่อน

    ขั้นแรก ต้องเปิดช่องทางการเข้าถึง Google sheet และกำหนดสิทธิ์ให้ Application ที่เราต้องการเข้าถึงข้อมูลนั้น ๆ ก่อน ไปยังลิงค์  https://console.developers.google.com/ และไปที่ปุ่มรูป Hamberger –> IAM & Admin –> Manage Resources

    จากนั้นจะแสดงหน้าจัดการ Resources ให้คลิกเมนู CREATE PROJECT จะแสดงดังรูป

    ตั้งชื่อ Project และคลิกปุ่ม CTREATE เมื่อสร้างแล้วจะแสดงดังรูป

    จากนั้นไปที่ ปุ่มรูป Hamberger –> APIs & Services –> Dashboard จะแสดงหน้า Dashboard ดังรูป

    ให้เลือกเมนู Credentials แล้วคลิกเมนู CREATE CREDENTIALS –> Service account

    สร้างเสร็จแล้วจะแสดงดังรูป จากนั้นคลิกแก้ไข

    จากนั้นคลิก ADD KEY –> Create new key จะเป็นการให้สิทธิ์การเข้าถึงให้กับผู้ใช้ กดปุ่ม CREATE

    จากนั้นแก้ไขไฟล์ JSON ที่โหลดมาให้เป็นชื่อ credentials.json และเปิดไฟล์ดังกล่าว copy ส่วนของ client_email ไว้ และนำไป set ให้เข้าถึง google sheet ที่เราต้องการ

    เปิด google sheet คลิกที่ปุ่ม Share และวาง client_email ที่เรา copy ไว้ จากนั้นคลิกปุ่ม Done

    เราก็จะมาเขียนโปรแกรมดึงข้อมูลกัน ในที่นี้ขอเขียน Python เนอะ เริ่มจาก install library ที่จำเป็นกันก่อนค่ะ เปิด command line แล้วรันคำสั่งนี้กันเลย

    pip install oauth2client gspread

    ที่แสดงในภาพข้างต้นแบบนั้น เนื่องจากเรา install ไปแล้วค่ะ ต่อไปเรามาเริ่ม code กันเล้ย อย่าลืม!! บันทึกไฟล์ไว้ที่เดียวกับ credentials.json เน้อ

    ที่สี่เหลี่ยมสีแดง คือ ลิงค์ของ google sheet ที่เราให้สิทธิ์การเข้าถึงไว้ เรียบร้อยมาลองรันกันดู

    ลืมให้ดูข้อมูลใน google sheet รูปด้านล่างเลยจ้า

    ถ้ารันไม่ได้ ให้ไปที่เมนู Library แล้วค้นหา API Library ของเรา แล้วคลิก Enable เรียบร้อยแล้วลองรันใหม่ดูค่ะ

  • มาจัดการข้อมูลซ้ำ ๆ และเอาข้อมูลล่าสุดกัน ใน Excel

    สืบเนื่องจากเมื่อ 2-3 เดือนก่อน มีโอกาสได้ทำแบบสอบถาม เก็บข้อมูลนักศึกษา แล้วนักศึกษากรอกข้อมูลมาซ้ำ ๆ กันหลายคน และเราจะเอาแค่ข้อมูลล่าสุดเท่านั้น ทำไงกันดีนะ….. ในเมื่อแบบสอบถาม export ออกมาเป็น excel ได้ เราก็มาลองดูว่าทำไงได้บ้าง เล่นไปเล่นมา เฮ้ย ง่ายจุง ได้ข้อมูลตามต้องการด้วยสิ มาดูกัน

    จากภาพ เราต้องทำการ Sort รหัสนักศึกษาและ Timestamp ล่าสุด สุ่มดูคร่าว ๆ รหัสนักศึกษา 6110610025 มีรายการซ้ำ เมื่อจัดการข้อมูลซ้ำและให้เหลือเฉพาะข้อมูลล่าสุด ต้องเป็นแถวที่ 42

    จากนั้นคลิกแท็บ Data –> Remove Duplicates เลือกเลือกเฉพาะ รหัสนักศึกษา ซึ่งมันซ้ำกันอยู่ เมื่อเรียบร้อยแล้วจะแสดง Dialog แจ้งบอก

    มี 28 รายการที่ซ้ำและได้ลบออกไปแล้ว 165 รายการที่ไม่ซ้ำ สุ่มดู รหัส 6110610025 จะพบแค่รายการล่าสุดเท่านั้น

    เป็นวิธีที่ง่ายมาก ลองนำไปใช้กันดูนะคะ แล้วพบกันใหม่ค่ะ…..

  • Robot Framework Puppeteer

    Robot Framework Puppeteer คืออะไร

    เป็น Library ที่ทำมาครอบ Puppeteer เพื่อให้ Robot framework ใช้งานได้ง่าย โดย Keyword ต่างๆจะเหมือนกับการใช้งาน Selenium Library ทำให้ใครที่ใช้งาน Selenium Library อยู่แล้วสามารถปรับตัว รวมไปจนถึง การเปลี่ยนมาใช้ Puppeteer ทำได้ง่ายเลยค่ะ และหมดปัญหาการที่เราต้องมาคอยอัพเดต Web driver อยู่ตลอด ๆ

    การติดตั้งง่ายมาก ๆ ดูให้ทันหล่ะ 555

    รัน Command เดียวเลยจบ ไม่ต้องโหลด Chrome driver หรือ Setup Path เพิ่มเติมให้ปวดหัว เปิด Command line มาเลยค่ะ แล้วพิมพ์คำสั่ง

    pip install –upgrade robotframework-puppeteerlibrary

    การใช้งาน

    เราลองมารัน code เดิมที่เขียนไว้กันดูดีกว่า (selenium2library) อ้าวเฮ้ย!!! Error ซะงั้น Web driver ไม่ support ต้องอัพเดตอีกแล้ว

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

    เปลี่ยนที่ Setting จาก Selenium2Library เป็น PuppeteerLibrary จากนั้นลองรันดู

    เปรียบเทียบความเร็วในการประมวลผลระหว่างใช้ Selenium2Library กับ PuppeteerLibrary
    รูปแรกจะเป็นการใช้ Selenium2Library รูปถัดไปจะเป็น PuppeteerLibrary

    จะเห็นได้ว่า PuppeteerLibrary ทำงานได้เร็วกว่า นี่ขนาดรันคำสั่งขนาดน้อย ๆ ไว้ลองกับคำสั่งที่ซับซ้อนแล้วจะมาเล่าให้ฟังค่ะ

  • ให้ Visual Studio Code แสดงสีและ Intellisense (Robot framework)

    เมื่อติดตั้ง Visual Studio Code เสร็จแล้ว ก่อนที่เราจะเริ่ม Code กัน หรือ Code ไปแล้วมันรู้สึกว่า นี่เรากำลังใช้ Note pad กันหรืออย่างไร ไม่มีสีสัน แยกส่วน Code ต่าง ๆ เพื่อลดการลายตา และมันยากต่อการอ่าน Code และไม่มี Intellisense อะไรเลย พิมพ์เองล้วน ๆ หน้าตาก็ประมาณนี้สีเดียว

    มาดูกันว่าเราจะทำอย่างไรกัน ไปที่เมนู Extensions แล้ว ค้นหาด้วยคำว่า robot แล้ว Enter

    ให้คลิก Install ตัว Robot Framework Intellisense

    เมื่อ Install เสร็จจะเห็นได้ว่ามีสีสันแล้วนะ

    และมี Intellisense ด้วยแล้วนะ

  • Variables ใน Robot Framework

    วันนี้เรามาดูตัวแปร ใน Robot Framework กันดีกว่า ดู ๆ ไปตัวแปรมันก็แปลกดีนะ มาดูกันว่าเป็นไงบ้าง

    1. Case Insensitive –> ตัวพิมพ์เล็ก – พิมพ์ใหญ่เป็นตัวเดียวกัน
    2. Ignore space –> ไม่สนใจช่องว่าง
    3. Ignore underscore –> ไม่แคร์ Underscore 555

    มาดูประเภทของตัวแปรกัน ดังรูปจ้า

    1. ค่าคงที่
    2. List
    3. Dictionary หรือ Json

    ตามตัวอย่าง มารันดูข้อมูลกันจะเห็นได้ว่ามันจะรันตามลำดับ ที่เราแสดง Log to console

    ลองดูว่าถ้าเราจะให้แสดง List เฉพาะคำว่า Chotkaew จะทำยังไง ให้มองว่า Thichaluk เป็น index ที่ 0 และ Chotkaew เป็น index ที่ 1

    รันดูผลลัพธ์กัน

    มาลองดูของ dictionary กันบ้าง ให้แสดงค่าของ Thichaluk

    รันดูผลลัพธ์

    ทุกคนคงจะมองเห็นการเข้าถึงข้อมูลแต่ละประเภทกันแล้วใช่มั๊ยค่ะ

    ต่อไปมาลองสร้าง List กับ Dictionary อย่างง่าย ๆ กัน รูปแบบคำสั่งก็ไปหาดูได้ที่ https://robotframework.org ที่ Libraries –> Builtin ที่ Builtin คลิก View หา Create List กับ Create Dictionary

    รันดูผลลัพธ์

  • Should Be Equal ใน Robot Framework

    วันนี้จะมาทดลองใช้ Should Be Equal (การเปรียบเทียบ) ใน Robot framework กันค่ะ ก่อนจะถึงคำสั่งเปรียบเทียบ เราก็ต้องเขียน Test Case อื่น ๆ กันก่อน งั้นวันนี้จะเขียนแบ่ง Test Case ให้อ่านง่าย ๆ กันไปเลย เพื่อเพื่อน ๆ จะได้นำไปประยุกต์ใช้งานกันได้ค่ะ

    สิ่งที่ต้องใช้ในวันนี้ คือ Notpad++ หรือ Tool อื่น ๆ ที่เพื่อน ๆ ถนัด วันนี้เราจะใช้ Visual Studio Code กันค่ะ (เพราะเหนื่อยกับการรันผ่าน command line แล้ว) มาเริ่มกันเลยดีกว่า

    จะเห็นว่า เรามีการตั้งชื่อ Test Case ให้อ่านง่าย เพื่อจะให้รู้ว่าแต่ละขั้นเราทำอะไร ตอนเป็น Report จะได้ดูง่ายเข้าไปอีก ค่อนไปดู Report ตอนท้าย

    คำสั่งนี้จะตรวจสอบว่าค่าที่ได้ตรงกันมั๊ย จะเห็นว่าเราเขียน Test Case เป็นภาษาไทยได้นะเออ จากรูปเปรียบเทียบค่าจาก xpath ที่ locator h1 ตามคำสั่ง //h1[@class=”main-header”]  เท่ากับ “ROBOT FRAME WORK/” หรือไม่

    Locator ที่กล่าวคือตำแหน่งตามรูปข้างบน คราวนี้เราลองปรับให้ ${expect} ไม่ใช่ค่าเดียวกับ locator ที่เราอ้างถึง

    จะเห็นได้ว่าที่ log console มีการแสดงผลในการเปรียบเทียบว่าไม่เท่ากัน ไปดู Report กันซะหน่อยว่าเป็นยังไง

    Report ก็ดูง่ายมากเลยเห็นมั๊ยหล่ะ ^_^

  • ทดสอบ API ด้วย Robot Framework (Get Request)

    ก็ยังคงเขียนเกี่ยวกับ robot framework อีกนั่นแหละ ^_^ วันนี้เลยจะมาเขียนตัวอย่างการทดสอบ api ด้วย Robot Framework (Get Request) อย่างง่ายกันค่ะ

    สิ่งที่ต้องใช้

    1. API  ที่จะใช้ในการทดสอบ อันนี้จะใช้ API ที่ http://thetestingworldapi.com ค่ะ
    2. เครื่องมือที่ใช้เขียน Notepad++  ^_^
    3. Cmd

    ขั้นแรกเราไปที่ http://thetestingworldapi.com แล้วคลิกที่ API ในที่นี้ขอเลือก API ของ StudentsDetails ดังรูปค่ะ

    จากนั้นก็เปิด Notpad++ ขึ้นมาเลยค่ะ

    ที่ Settings ต้องเรียก Library  RequestsLibrary นะ แต่ก่อนอื่นต้องไปลง Library ตัวนี้กันก่อน โดยใช้คำสั่ง

    pip install robotframework-requests

    ถ้าลงแล้วก็จะตรวจสอบได้ โดยใช้คำสั่ง pip freeze ดังรูป

    มาที่ Notepad++ กันต่อ ^_^ เขียนคำสั่ง ดังนี้เลย

    จะเห็นได้ว่าเรามีแสดง status_code ออกมาด้วย มารู้จักความหมายของ status_code แต่ละตัวกันดีกว่า

    2xx  คือ OK
    3xx คือ Redirection
    4xx คือ Resource not found
    5xx คือ Server error

    มารันผลลัพธ์กันดีกว่า

    อันนี้ไม่ขอรัน code ในส่วนของ content นะ ไปรันกันเอาเอง เพราะมันเยอะมากตาลาย capture รูปมาก็คงดูไม่รู้เรื่อง ^_^

    การทดสอบ Get Request อย่างง่าย ก็ประมาณนี้นะคะ