Monday, March 31, 2014

การเขียน Google Apps Script เพื่อใช้งาน Custom Function

Google Apps Script คือวิธีการสั่งงาน Google Apps โดยการเขียนโปรแกรม (ใช้ฐานจาก javascript) ซึ่งการเขียน Google Apps Script ช่วยให้เราสามารถใช้งาน Google Apps ในรูปแบบใหม่ๆ ได้หลากหลายมากขึ้น เช่น สั่งให้ส่งอีเมลตามเวลาที่ตั้งไว้ สั่งให้คำนวณค่าใน spreadsheet ตามเงื่อนไขที่กำหนด (โดยอัตโนมัติ)

บทความนี้จะแนะนำการใช้งาน Google Apps Script เพื่อทำ custom fuction ใน Google Sheets ครับ

Custom Function คืออะไร?


โดยทั่วไป การใช้งานโปรแกรมประเภท spreadsheet ซึ่งมีลักษณะเป็นตาราง 2 มิติ มักจะไม่ใช่แค่การเก็บข้อมูลอย่างเดียว เราสามารถใส่การคำนวณให้กับ cell ต่างๆ ใน spreadsheet ได้ เช่น หาค่ารวม (SUM) ค่าเฉลี่ย (AVG) และอื่นๆ อีกมากมาย

(โดยทั่วไป การใช้งาน spreadsheet จะใช้คู่กับการคำนวณค่าต่างๆ เสมอ ภาพจาก: kissflow.com)

การคำนวณค่า เราจะใช้การเรียก function (หรือที่เรียกกันว่า "สูตร") ที่ spreadsheet เตรียมไว้ให้ โดยทั่วไปจะเป็นการใส่เครื่องหมายเท่ากับ (=) แล้วตามด้วยชื่อ function ลงใน cell ปลายทาง เช่น ที่ cell A6 หากเราใส่ค่า =AVG(A1:A5) หมายถึงให้โปรแกรมแสดงค่าเฉลี่ยของค่าใน cell A1 ถึง A5 และแสดงผลลัพธ์ที่ A6

ตัวอย่างการใส่สูตรเพื่อหาค่าเฉลี่ย

สำหรับการทำงานทั่วไป เราสามารถใช้ function ที่มีอยู่ในการทำงานได้ทันที (ดูรายการ function ทั้งหมดของ Google spreadheets ได้ที่นี่) แต่ในบางกรณี หากการทำงาน (หรือการคำนวณ) นั้นๆ ไม่มี function มารองรับ (เนื่องจากเป็นวิธีการที่เฉพาะทางหรืออะไรก็แล้วแต่) เราสามารถเขียน function ขึ้นมาเพื่อใช้งานเองได้ และ function ที่เขียนขึ้นมาก็เรียกว่า custom function นั่นเอง

การเขียน Custom Function


การเขียน function เพื่อใช้งานเองนั้น เป็นรูปแบบหนึ่งในการใช้งาน Google Apps Script (ซึ่่ง Google Apps Scirpt สามารถใช้งานได้หลากหลายรูปแบบ) และเป็นวิธีการที่ใช้งานได้กับ spreadsheet เท่านั้น

ขั้นแรกให้เปิด Script Editor จาก Google Sheets ได้จากเมนู Tools > Script editor...

การเปิด Script Editor จาก Google Sheets

ตั้งชื่อ function ที่ต้องการ (ชื่อนี้จะเป็นชื่อที่เราเรียกใช้จาก spreadsheet) หาก function ที่เราจะเขียนมานั้น ต้องมี input ก็ให้ระบุ input ตอนประกาศ function ด้วย

ตั้งชื่อ function พร้อมค่า input ที่รับมาคำนวณ

เขียน Google Apps Script เพื่อคำนวณค่าที่ได้รับ และ return ผลลัพธ์คืน

เมื่อคำนวณเสร็จ ให้คืนค่าผลลัพธ์

การใช้งาน Custom Function


หลังจากเขียน Custom Function ใน script editor เรียบร้อยแล้ว ในหน้า spreadsheet เราสามารถเรียกใช้งาน custom function ได้ด้วยวิธีการเดียวกับการเรียก function ทั่วไป นั่นคือใส่เครื่องหมายเท่ากับ (=) แล้วตามด้วยชื่อ function ตามที่ตั้งไว้ใน Script Editor (หาก custom function มีค่าที่ต้องใช้ในการคำนวณ ก็ให้ใส่ค่าหรืออ้างอิง cell ต้นทางด้วย) ก็จะได้ผลลัพธ์ของ custom function ใน cell ปลายทาง (cell ที่ใส่สูตร)

=Bahttext(arg) for Google Sheets ตัวอย่างการใช้ Custom Function


custom function ที่ผู้เขียนทดลองเขียนขึ้นมาใช้งานส่วนตัวนั้น มาจากสูตร =Bahttext(number) ของโปรแกรม Excel (ไม่แน่ใจเรื่องลิขสิทธิ์การตั้งชื่อสูตรนะครับ หากใครต้องการท้วงติงรบกวนแจ้งมาที่ pakorn.n@tangerine.co.th ได้เลยครับ) โดยหน้าที่คือสูตรนี้จะรับค่าเป็นตัวเลขและให้ผลลัพธ์เป็นตัวหนังสือไทยตามมูลค่าของตัวเลขที่ระบุไว้

ตัวอย่างการเรียกใช้ =Bahttext(A1) ซึ่งเป็น custom fuction

สำหรับใครที่สนใจการใช้งาน Google Apps Script หรือ Google Apps for Business สามารถติดต่อมาได้ที่ google@tangerine.co.th ครับ
---
www.tangerine.co.th

Tuesday, March 18, 2014

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

Google Apps Script คือวิธีการเรียกใช้งาน Google Apps อีกรูปแบบหนึ่ง ช่วยให้ผู้ใช้สามารถย้ายงานที่ต้องทำซ้ำๆ หรืองานที่มีรูปแบบตายตัว เปลี่ยนมาเป็นการสั่งงานผ่าน script ที่สามารถทำงานได้โดยอัตโนมัติ สำหรับคนที่ยังไม่รู้จัก Google Apps Script สามารถอ่านเพิ่มเติมได้จากบทความ รู้จักกับ Google Apps Script

บทความตอนนี้จะพูดถึงวีธีการเรียกใช้งาน Google Apps Script
เนื่องจาก Google Apps Script คือชุดของคำสั่งที่แสดงขั้นตอนการทำงาน ตามที่เราออกแบบและกำหนดไว้ การเขียน Google Apps Script เราจะเรียกกลุ่มของการทำงานว่า function (แบบเดียวกับ method ของภาษา Java) ซึ่งการทำงานของ Google Apps Script จะเกิดจากการสั่ง run function ที่เราระบุไว้

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

การเรียกใช้งาน function ใน Google Apps Script สามารถทำได้หลายช่องทาง โดยสามารถจำแนกออกเป็น 3 วิธีการหลักๆ ได้แก่

1. สั่ง run function ที่ระบุโดยตรง

กรณีที่เราต้องการสั่ง run function ที่ต้องการ เราสามารถสั่งงานโดยตรงจากหน้า script editor หรือสั่งงานจากหน้า Script Manager ได้ดังนี้
สำหรับหน้า script editor ให้เลือกชื่อ function ที่ต้องการและกดปุ่ม run จากหน้า script editor
สำหรับหน้า Google Sheets ให้กดที่เมนู Tools > Script manager จะปรากฏรายชื่อ function ทั้งหมด เลือก function ต้องการ และกด run

การเรียกใช้ function โดยตรงจากหน้า Script editor

ใน Spreadsheet สามารถเรียกใช้งาน function ได้จากเมนู Tools > Script manager...

เลือกชื่อ function ที่ต้องการและกด Run

2. ตั้ง trigger เพื่อ run fuction ที่ระบุไว้

ในหน้า script editor เราสามารถใส่ trigger เพื่อกำหนดเงื่อนไขในการ run function ที่ต้องการได้ โดย trigger จะแบ่งเป็น 2 รูปแบบคือ

  • Time-driven trigger คือการกำหนดเงื่อนไขการ run function ตามเวลาที่ระบุไว้ (เช่น ให้ส่ง email ทุกวันตอนเวลาหกโมงเช้า) ซึ่งจะมีเงื่อนไขย่อยดังนี้
    • Specific date and time
    • Minutes timer
    • Hour timer
    • Day timer
    • Week timer
    • Month timer
  • Spreadsheet event trigger คือการกำหนดเงื่อนไขการ run function ตาม event ที่เกิดขึ้น มีเงื่อนไขย่อยดังนี้ (trigger ส่วนนี้จะมีเฉพาะกรณีที่เป็น script ที่ผูกอยู่กับ spreadsheet)
    • On open: run function ที่ระบุเมื่อมีการเปิด document
    • On edit: run function ที่ระบุเมื่อมีการแก้ไข document
    • On form submit: run function ที่ระบุเมื่อมีการ submit form มายัง Spreadsheet

การใส่ trigger เพื่อเรียกใช้ function ตามเงื่อนไขที่ระบุไว้

3. ตั้งชื่อ function ที่มีชื่อเฉพาะตามที่ระบบกำหนดไว้

ใน Google Apps Script จะมีชื่อ function เฉพาะจะถูกเรียกใช้เมื่อ event ที่เจาะจงเกิดขึ้น ได้แก่

3.1 event ที่เกี่ยวข้องกับ document
function ที่กำหนดชื่อเป็น onOpen, onEdit จะถูกเรียกใช้งานโดยอัตโนมัติตามเงื่อนไขดังนี้

  • onOpen จะทำงาน เมื่อมีการเปิดเอกสารขึ้นมา
  • onEdit จะทำงาน เมื่อมีการแก้ไขเอกสาร

3.2 function สำหรับ deploy เป็น web app
function ที่กำหนดชื่อเป็น doGet, doPost จะถูกเรียกใช้งานตามเงื่อนไขดังนี้

  • doGet จะทำงาน เมื่อมีการทำ HTTP GET request มาที่ script
  • doPost จะทำงาน เมื่อมีการทำ HTTP POST request มาที่ script
---