เมื่อ Google Form ไม่ตอบโจทย์ ผมจึงโดดใปใช้ App Maker

ที่บริษัทแทนเจอรีน เรามีการใช้งาน G Suite กันอย่างครึกครื้นมาก ตัวชี้วัดหนึ่งก็คือ เรามี adoption score (ตัวเลขบ่งชี้ระดับการใช้งาน G Suite ยิ่งมาก ยิ่งดี) อยู่ในระดับ Excellent ถ้าดูจากกราฟ จะเห็นว่าแทนเจอรีนมีคะแนนอยู่ที่ 94++ เสมอ

กราฟพุ่งชนเพดานที่ 100 คะแนนอยู่เป็นบางช่วง

สำหรับใครที่เป็นลูกค้าแทนเจอรีน และอยากทราบว่าโดเมนตัวเองมี adoption score อยู่ที่เท่าไร สามารถติดต่อเข้ามาสอบถามกับทีมงานได้นะครับ

Google Form กับการใช้ทำ OT Request

ตัวอย่างหนึ่งที่เราใช้งานกันคือแบบฟอร์มในการขออนุมัติทำงานนอกเวลา หรือ OT Request form ที่เราสร้างด้วย Google Form โดยมี input ดังนี้

  • ชื่อบริษัท : Short answer
  • เวลาเริ่ม : Date (include time)
  • เวลาจบ : Date (include time)
  • ลักษณะงาน : Paragraph
  • ผู้ปฏิบัติงาน : Paragraph
  • Manager : Dropdown
  • Sales : Dropdown

ฟอร์มขออนุมัติทำงานนอกเวลา อายุกว่า 4 ปี

หลังจากพนักงานเข้ามากรอกฟอร์มแล้ว จะมี App Script ที่ผูกเอาไว้ อ่านค่าที่กรอกเข้ามา และเรียบเรียงข้อมูลในฟอร์มส่งเป็นอีเมลไปหา manager เพื่อขออนุมัติการทำงานนอกเวลา

Google Form กับ requirement ที่ล้ำหน้า

ฟอร์มนี้มีการใช้งานและปรับปรุงเล็กน้อยมาเรื่อยๆ ตั้งแต่ช่วงกลางปี 2014 หรือประมาณ 4 ปีที่แล้ว ทั้งนี้มีจุดที่การใช้งาน Google Form ยังไม่ยืดหยุ่นพอ เช่น
  • ลักษณะงานบางครั้ง ต้องระบุช่วงเวลาเริ่ม-จบ มากกว่า 1 ช่วง
  • การระบุเวลา ทำได้แค่ 12 hr format (ระบุ AM/PM) ซึ่งสร้างความสับสน และทำให้กรอกข้อมูลผิดพลาด
  • การใส่ผู้ปฏิบัติงาน ต้องพิมพ์อีเมลให้ถูกต้องตามรูปแบบที่ระบุ ไม่อย่างนั้น script จะส่งอีเมลไม่ได้และต้องกรอกใหม่ โดยจะรู้ผลหลังจาก script ทำงานไม่ได้และมีอีเมลแจ้งมาบอก
  • รายชื่อ manager และ sales ใน dropdown ต้องคอย update แบบ manual

App Maker ที่มาพร้อม G Suite Business

จากโจทย์ที่ได้มานี้ ผมจึงต้องมองทางเลือกอื่น ซึ่งพอดีกับที่ทางบริษัทฯ upgrade จาก G Suite Basic มาเป็น G Suite Business ซึ่งรวมเครื่องมือในการสร้าง app สำหรับองค์กร ที่ชื่อว่า App Maker มาไว้ด้วย ผมจึงลองปรับใช้งาน โดยใช้ App Maker สร้าง OT Request form เวอร์ชันใหม่ ที่ตอบโจทย์ได้มากกว่า โดยจุดที่ App Maker สามารถทำได้ตาม requirement ผมจะอธิบายหลักการคร่าวๆ ไว้ให้นะครับ ว่าทำยังไง

สร้าง app ด้วย App Maker ที่อยู่ใน G Suite Business

requirement แรกคือ การใส่ช่วงเวลา OT มากกว่า 1 ช่วง ซึ่งนั่นแปลว่า ตัวฟอร์มเองจะต้อง dynamic ได้ตามข้อมูลที่กรอกเข้ามา คือสามารถรองรับได้ ไม่ว่าการขอ OT ครั้งนั้น จะใช้เวลา 1 ช่วง หรือ 2 ช่วง 3 ช่วงก็ตาม

วิธีแก้ปัญหาอย่างง่าย อาจจะทำได้โดยการใช้ Google Form และสร้างช่องให้กรอกรอไว้เลย 3 ช่วง ในกรณีที่ช่วงเวลาไม่เกิน 3 ก็ยังพอจะใช้งานได้ แต่ตัวอย่างนี้ เราจะทำให้ฟอร์มบน App Maker นั้น ยืดหยุ่นได้แบบไม่จำกัด

สร้าง dynamic ให้ฟอร์มด้วยการแยกชุดข้อมูลและแสดงซ้อนกัน

หลักการบน App Maker คือ เราจะต้องสร้าง data model ไว้หลายๆ ชุด โดยจะมี OT_Request เป็น model หลักของฟอร์มสำหรับเก็บข้อมูลการขอ OT และมี OT_Period เป็น model ย่อย สำหรับเก็บข้อมูลช่วงเวลาในการขอ OT ซึ่งแปลว่า ใน OT_Request 1 item สามารถมี OT_Period ได้มากกว่า 1 item โดยเราจะทำหน้า input ของ OT_Period ซ้อนเข้าไปใน OT_request ทำให้ ระหว่างที่ผู้ใช้กำลังอยู่ที่หน้า OT_Request จะสามารถกดสร้าง OT_Period ได้หลายอัน (หรือหลายช่วงเวลา)

การแสดงผล OT_Period นั้น จะใช้ widget ที่ชื่อ "List" ซึ่งจะผูกไว้กับ OT_Period โดย widget ตัวนี้จะแสดงข้อมูลใน OT_Period ซ้อนอยู่ในฟอร์มของ OT_Request เช่นเดียวกัน

กรอบสีฟ้าด้านบน เป็นส่วน List ที่แสดงช่วงเวลาทำงานที่ผู้ใช้เพิ่ม (แสดงได้หลายรายการ)
กรอบสีเทา เป็นส่วนที่ผู้ใช้จะกรอกข้อมูลและกดปุ่มเพื่อเพิ่มช่วงเวลาขอ OT ทั้ง 2 ส่วนนี้แสดงผลซ้อนอยู่ในฟอร์มหลักอีกที

ด้วยหลักการที่ เราทำให้ในฟอร์มใหญ่ (OT_Request) เราสามารถเพิ่มข้อมูลย่อย และแสดงผลข้อมูลย่อยได้เลย ทำให้การใส่ข้อมูลย่อยนั้น dynamic ได้ตามที่ผู้ใช้ต้องการ

ส่วนการสร้าง input เพื่อรับข้อมูลเวลาแบบ 24 hr format นั้น ยังไม่มี widget ที่มีความสามารถนี้โดยตรง เราจึงประยุกต์ด้วยการสร้าง dropdown เพื่อให้ผู้ใช้เลือก ชั่วโมง (00 - 24) และ นาที (00, 05, 10, ... , 55) จากนั้นจึงเขียน script เพื่อดึงค่าจาก dropdown แล้วนำมา convert เป็นเวลาอีกครั้ง

ระบุคนในบริษัทได้ง่ายๆ ด้วย User Picker

ช่องผู้ปฏิบัติงาน จากแต่เดิมที่ผู้ใช้ต้องสะกดอีเมลให้ถูกต้องตามรูปแบบ (ห้ามสะกดอีเมลผิด และให้ใส่ลูกน้ำคั่นระหว่างอีเมลเสมอ) เราจะปรับมาใช้ widget ที่ชื่อ "User Picker" ที่สะดวกมากขึ้น เนื่องจาก widget ตัวนี้จะขึ้น autocomplete ให้ผู้ใช้กดเลือกระหว่างที่เริ่มพิมพ์อีเมลได้ แก้ปัญหาเรื่องการสะกดอีเมลไม่ถูกต้อง ส่วนการใส่อีเมลหลายๆ address ก็จะเปลี่ยนจากการใส่ลูกน้ำ (ซึ่งผิดพลาดได้ง่าย) มาเป็นการเพิ่ม user เข้าไปทีละคน จนกว่าจะครบตามต้องการ

User Picker จะขึ้น autocomplete ให้ผู้ใช้งานเลือก ขณะกำลังพิมพ์อีเมล

กรณีที่การกรอกข้อมูลนั้น ไม่ถูกต้อง และ script ทำงานไม่ได้ เราสามารถออกแบบให้ app แจ้งเตือนผู้ใช้ได้ทันที ทำให้ผู้ใช้รับทราบและแก้ไขข้อมูลที่กรอกได้เลย (Google Form ถึงกรอกผิด ก็สามารถ submit ได้ แล้วค่อยมารู้ผลทีหลังว่า script ทำงานไม่ได้)

update รายชื่อ manager และ sales ได้อัตโนมัติ

สุดท้าย คือการสร้าง dropdown ของ manager และ sales แบบ dynamic ไม่ต้องมาคอยเพิ่ม/ลดรายชื่อแบบ manual โดยที่เราสามารถเขียน script ให้ App Maker ไปอ่านรายชื่อจาก Google Group ใน G Suite และนำมาสร้างเป็น drowpdown ทำให้การจัดการไปอยู่ที่ Google Group อย่างเดียวเท่านั้น (ซึ่ง group เป็นสิ่งที่ต้องคอย update อยู่แล้ว)

ที่ช่อง options ทางด้านขวา เราสามารถเรียก function เพื่อ update รายชื่อ manager ใน dropdown ให้เป็นปัจจุบันได้เลย

นี่เป็นตัวอย่างหนึ่งของการสร้าง app ขึ้นมาใช้งานภายในองค์กรด้วย App Maker หากใครสนใจอยากนำไปใช้งาน หรืออยากทราบข้อมูลเพิ่มเติม สามารถติดต่อสอบถามเข้ามาได้ครับ ที่ tangerine 



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเรียกใช้งาน Google Apps Script

ลดเวลาการเรียก API ใน Apps Script ด้วย fecthAll

ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub