- เริ่มต้นใช้งาน GAS Editor
- อ่าน/เขียนข้อมูลกับ Google Sheets
- Case Study: ตรวจสอบ Website Availability ด้วย GAS
- แทนที่ข้อความ ด้วยค่าใน Google Sheets
- การสร้างไฟล์ PDF จากข้อความที่ต้องการ
- การส่งอีเมลถึงผู้รับตามที่กำหนด พร้อมแนบข้อความ/ไฟล์ที่ต้องการ
- การส่งไฟล์ทางอีเมลแบบ Top Secret!
- การแสดงผลจำนวน Quota การส่งอีเมลที่ยังเหลืออยู่ในรอบ 24 ชั่วโมง
Category: Google Apps
-
Google Apps Scripts Workshop – Level 1
-
Mail merge with gmail and google sheet
หลังจากทำฟอร์มแบบสอบถามส่งเป็นจดหมายเวียน (mail merge) ให้กับผู้ดูแลระบบของคณะ/หน่วยงาน คิดว่าอยากเล่าให้เพื่อนๆฟังด้วยว่า มีเทคนิคอยู่ 1 เทคนิค คือ การใส่ส่วนเสริม (Add-ons) ชื่อ Yet Another Mail Merge เข้าไปใน Google Sheet และใช้มันเพื่อประสาน gmail (จดหมายร่าง) กับ google sheet ที่มีฟิลด์เก็บข้อมูล E-mail Address ของทุกคน
ขั้นตอน
1. สร้างฟอร์ม
2. สร้างคำถามในฟอร์มและทดสอบฟอร์มให้เรียบร้อย
3. สร้าง Google Sheet ที่มีฟิลด์ Name, Office, Email Address
4. สร้างจดหมายฉบับร่าง ที่ในช่อง To: ไม่ต้องใส่ ให้เว้นไว้เฉยๆ ส่วนในเนื้อหามีอ้างถึง ฟิลด์ ที่ต้องการ
5. กลับมาที่ Google Sheet ที่เมนูส่วนเสริม (Add-ons) ให้ดาวน์โหลดส่วนเสริมชื่อว่า “Yet Another Mail Merge” ซึ่งจะมีคำถามให้ยอมรับเงื่อนไข อ่านให้ละเอียดนะครับ) แล้วจะมีเมนูให้ใช้ ก็เลือกเมนูย่อย “เริ่มประสานอีเมล”
6. ในช่อง จดหมายร่าง: ให้เลือกชื่อ Subject ของอีเมลที่ร่างไว้นั้น
ในช่องชื่อผู้ส่ง: พิมพ์ชื่อผู้ส่งตามสะดวกข้อจำกัดคือส่งได้วันละ 100 ฉบับ
7. เมื่อคลิก ส่งอีเมล จะเห็นว่ามีการสร้างฟิลด์ Merge Status และใส่คำว่า EMAIL_SENT
8. เช็คจดหมายส่งแล้ว จะเห็นว่าส่งอีเมลไปให้ทีละคน
ข้อมูลอ้างอิงที่ผมใช้ในการทำงานนี้:
1. Yet Another Mail Merge
https://sites.google.com/site/scriptsexamples/available-web-apps/mail-merge2. Youtube วิดีโอ เรื่อง “Create a Mail Merge with Gmail and Google Drive 2014”
-
Mozilla Thunderbird & Google Calendar
1. ติดตั้ง extension 2 ตัวใน Thunderbird ได้แก่ Lightning และ Provider for Google Calendar ดังรูป
extension; lightning, Provider for Google Calender 2. รีสตาร์ท Thunderbird จะพบปุ่ม
อยู่ทางมุมบนขวา
3. เข้า gmail.psu.ac.th ล็อคอินให้เรียบร้อย คลิกแล้วเลือก Calendar
4. ที่หน้า Calendar คลิกเลือก Setting
5. คลิก Calenders ทีี่มุมซ้ายบน
6. เลือกปฏิทินที่ต้องการ
Available Calendar 7. ตรวจสอบว่าใช่ปฏิทินที่ต้องการหรือไม่ดูที่ ช่อง Calender Owner ว่าเป็นอันเดียวกับ Username ที่ล็อคอินเข้า gmail
Calendar Owner 8. เลื่อนดูด้านล่างในส่วนของ Private Address:
Private Address 9. คลิกขวาที่ ICAL เลือก Copy Link Location
10. กลับมาที่ Thunderbird กดปุ่ม
เพื่อเปิดปฏิทิน
11. คลิกขวาที่ช่องว่างฝั่งซ้ายมือใต้คำว่า Calendar เลือก New CalendarNew Calendar 12. ได้หน้าต่าง Create New Calendar เลือก Google Calendar กด Next
13. กด Ctrl-v เพื่อ paste URL ของปฏิทินที่ Copy มาในข้อก่อนหน้า
14. กด back 1 ครั้งแล้วกด Next ใหม่ (อันนี้น่าจะเป็นบักของ Ubuntu 14.10)
15. กด Next
16. จะมีหน้าต่างเพื่อยืนยันตัวตนของ Google ปรากฎขึ้นมา17. กด Sign in จะได้อีกหน้าต่างดังรูป กดยอมรับ
18. จะมีหน้าให้เลือกปฏิทินที่ต้องการอีกครั้งกด Next
Lacate your calendar 19. จะมีหน้าให้ ยืนยันตัวตน และหน้าเพื่อขอสิทธิ์การเข้าถึง อีกรอบกดให้ Sign in และยอมรับ
20. กด Finish
21. ก็จะได้ปฏิทินเพิ่มมาตามต้องการ
22. ทั้งหมดนี้ทำบน Ubuntu 14.10 บน Windows ก็น่าจะทำเหมือนกัน
23. สามารถเพิ่มลบเหตุการณ์ผ่าน Thunderbird ได้เลยไม่ต้องเข้าเว็บอีก …
24. จากที่ทดสอบหนึ่ง Profile ของ Thunderbird สามารถมี Google Calendar ได้เพียง account เดียว
25. ขอให้สนุกครับ -
การใช้งาน Google Drive ภายในหน่วยงาน
สืบเนื่องจากหน่วยงานมีการส่งต่อไฟล์ข้อมูลด้วย Flash Drive ซึ่งปัญหาที่ตามมาในทุกครั้งคือ flash drive มีไวรัส อีกทั้งเห็นว่า ตอนนี้มอ.เราตื่นตัวเรื่อง Google Apps. ผมก็เลยนำเสนอให้หน่วยงานใช้ Google Drive เพื่อการแชร์ไฟล์ที่สะดวกและปลอดภัยมากยิ่งขึ้น (แว่วว่า คณะต้นสังกัดกำลังจะจัดอบรมให้เจ้าหน้าที่ทุกคนใช้ Google Drive อยู่ในเวลาอันใกล้นี้) ผมเลยทำคู่มือการใช้งานให้กับเจ้าหน้าที่ในหน่วยงาน เลยขอนำมาแชร์นะคับ ผิด-ถูกอย่างไร แนะนำได้นะคับ ^^
มาเริ่มกันเลยดีกว่านะคับ ^^
จะมี 4 ส่วนหลักๆ ดังนี้
- การยืนยันตัวตนเพื่อใช้ PSU Web Mail on Google Apps
- การ Login โดยใช้ PSU Mail on Google
- การสร้างรายชื่อ Contacts
- การสร้างโฟลเดอร์เพื่อแชร์
การยืนยันตัวตนเพื่อใช้ PSU Web Mail on Google Apps
ในส่วนนี้ทำเพียงครั้งแรกที่จะเริ่มเข้าใช้งาน Google Apps เท่านั้น ในการเข้าใช้งานครั้งต่อๆไป ไม่จำเป็นต้องทำขั้นตอนนี้
- เปิดเว็บ https://webmail.psu.ac.th > คลิก Password Setting เพื่อทำการยืนยันตัวตนในการใช้งาน Google Apps. (ทำแค่ครั้งแรกครั้งเดียว)
- จะเป็นการยืนยันตัวตน โดยทำการใส่
1. ใส่ข้อมูล PSU Passport
2. ใส่รหัสผ่านของ PSU Mail โดยสามารถใช้รหัสผ่านเดิม หรือเปลี่ยนรหัสผ่านใหม่ โดยกรอกข้อมูลให้ครบทุกช่อง
*** กรณีการตั้งรหัสผ่านใหม่ ต้องอยู่ภายใต้เงื่อนไขในการตั้งรหัสผ่าน
3. คลิก Change Password
Google Drive มีพื้นที่แบบไม่จำกัด (Unlimited) โดยสามารถโยนไฟล์ใหญ่ๆ ขนาด 1TB ได้สบายๆ (ไฟล์เดียวที่มีขนาด 1000 MB)
สามารถเข้าถึง Google Drive ได้ 2 ช่องทาง คือA: http://drive.google.com
B: http://drive.psu.ac.thการ Login โดยใช้ PSU Mail on Google
- เปิดเว็บ google.co.th > คลิก ลงชื่อเข้าสู่ระบบ
- ใส่ PSU mail และ Password > คลิก ลงชื่อเข้าใช้
- คลิกที่ > คลิก ไดร์ฟ
- เพื่อความสะดวกในการใช้งานในรูปแบบ Folder บนเครื่องคอมพิวเตอร์ ให้คลิก Install Drive for your PC เพื่อติดตั้งโปรแกรม Google Drive บนเครื่องคอมพิวเตอร์
- ไอคอน Google Drive จะอยู่บนหน้า Desktop ซึ่งจะทำงานในรูปแบบ My Computer ได้ (copy, past, ลาก-วาง, drag mouse)
การสร้างรายชื่อ Contacts
- สร้างรายชื่อ (Contacts)
- คลิกปุ่ม New Contact > พิมพ์ชื่อ > ใส่ email แล้ว enter
*** เพิ่มรายชื่ออีเมลล์ที่ต้องการ
- สร้างกรุ๊ปเพื่อความง่ายในการส่งเมลล์เป็นกลุ่ม โดยคลิกที่ New Group
- พิมพ์ชื่อกลุ่ม > คลิกปุ่ม OK
- เปิด My Contacts > คลิกเลือกอีเมลล์ที่ต้องการให้อยู่ในกลุ่ม SouthGIST > คลิกเมนู Group > เลือก SouthGIST > คลิก Apply
- จะเห็นได้ว่ารายชื่อที่เลือกไว้ก่อนหน้านี้ จะอยู่ในกลุ่ม SouthGIST
การสร้างโฟลเดอร์เพื่อแชร์
12. คลิก Create > คลิก Folder
13. พิมพ์ชื่อโฟลเดอร์ > คลิก Create
14. โฟลเดอร์ที่สร้างจะอยู่ใน list ของ My Drive ให้คลิกโฟลเดอร์ที่ต้องการจะแชร์ > เลือก Share > คลิก Share…
15. ตรงช่องบุคคล ให้ใส่รายชื่ออีเมลล์ที่ต้องการจะแชร์ให้คนนั้น หรือเลือก Contacts Group เพื่อแชร์แบบกลุ่ม > พิมพ์ข้อความเพื่อแจ้งข้อมูลเกี่ยวกับโฟลเดอร์ที่จะแชร์ให้ผู้ใช้งานแต่ละคนทราบ > คลิกปุ่ม ส่ง
16. ใช้จะได้รับเมลล์ คำเชิญให้ทำงานร่วมกัน โดยจะแสดงโฟลเดอร์ที่เราแชร์ (SouthGIST) พร้อมกับข้อความที่แจ้งรายละเอียดเกี่ยวกับโฟลเดอร์ที่แชร์
*** คู่มือนี้ ผมเน้นการใช้งานจริงกับหน่วยงานหน่ะคับ ผิดพลาดประการใด แจ้ง-เตือน ติ-ชม ได้คับ ^^
อ่านเพิ่มเติมได้ที่ https://support.google.com/drive/?hl=en#topic=14940
Last update : 17-12-2014 15:47
-
วิธีใช้ Google Sheets ลบผู้ใช้จำนวนมากบน GAFE
[บทความนี้ สำหรับผู้ที่มี Admin Privilege ขึ้นไป]
ต่อจากบทความ วิธีใช้ Google Sheets เปลี่ยนแปลงข้อมูลผู้ใช้จำนวนมากบน GAFE
เมื่อต้องการลบผู้ใช้จำนวนมาก ก็ทำเหมือนเดิม แต่เปลี่ยน Script นิดหน่อยดังนี้
- สร้าง Google Apps Scripts ใน Google Sheets นี้ ด้วยเมนู Tools > Script Editor … จากนั้นเลือก Blank Project แล้วกดปุ่ม Close
- ตั้งชื่อโปรเจค UpdateUser แล้วใส่โค๊ดดังนี้ (ปรับค่า firstRow และ lastRow ให้เหมาะสมตามต้องการ)
- นอกนั้นเหมือนเดิม
หวังว่าจะเป็นประโยชน์ครับ
-
วิธีใช้ Google Sheets เปลี่ยนแปลงข้อมูลผู้ใช้จำนวนมากบน GAFE
[บทความนี้ สำหรับผู้ที่มี Admin Privilege ขึ้นไป]
วิธีใช้ Google Sheets สร้าง Account ใหม่ลงใน Sub Organization ของ GAFE
เมื่อต้องการแก้ไขข้อมูลของผู้ใช้จำนวนมาก ได้แก่
- ตั้งรหัสผ่านใหม่
- ไม่บังคับให้เปลี่ยนรหัสผ่านในครั้งแรกที่เข้าระบบ
- ย้าย Organization Unit ไปอยู่ภายใต้ /Students
ใน Admin Console ของ Google Apps จะมีเครื่องมือ Users เพื่อใช้ในการจัดการผู้ใช้
แต่เครื่องมือที่มีอยู่ มีข้อจำกัด คือ ไม่สามารถเขียนเงื่อนไขในการกรองเอาเฉพาะ Email Address ของผู้ใช้ที่ต้องการได้
ดังนั้นจึงต้องใช้วิธีการ Download Users ทั้งหมดออกมาก่อน
เลือก Download all users … แล้วกดปุ่ม OK
จะได้ไฟล์ UserData-psu.ac.th-20141110.csv (ชื่ออาจจะแตกต่างกันไปในแต่ละโดเมน) ให้ Save ไว้ในเครื่องคอมพิวเตอร์ก่อน แล้ว Upload ไปเก็บไว้บน Google Drive แล้วเปิดด้วย Google Sheets จากนั้นเลือกคอลัมน์ A แล้วคลิกขวาเลือก Copy ไปใส่ใน Google Sheets ใหม่
ใน Google Sheets ใหม่ ให้ Edit > Paste ข้อมูลมาลงไว้ในคอลัมน์ A เช่นกัน
จากนั้นในคอลัมน์ B2 ใส่สูตรว่า (นักศึกษาของมหาวิทยาลัยจะใช้ Login เป็นรหัสนักศึกษาซึ่งเป็นตัวเลขทั้งหมด จำนวน 7 หรือ 10 หลัก ตามด้วย @psu.ac.th) ดังนี้
)
จากนั้นให้ Copy สูตรดังกล่าวไปในคอลัมน์ B ทั้งหมด จะทำให้ ชื่อบัญชีของนักศึกษาเท่านั้นที่จะมีค่าเป็น Y ส่วนบุคลากรจะมีค่าเป็น N หลังจากนั้นให้ Filter โดยเลือกเฉพาะคอลัมน์ B ที่มีค่าเป็น Y ก็จะได้นักศึกษาทั้งหมด
แล้วทำการเลือกข้อมูลที่ได้ Copy เอาไว้แล้วสร้าง Google Sheets ใหม่อีกอันหนึ่ง ตั้งชื่อว่า Udate Users แล้วเอาข้อมูลดังกล่าวมาใส่ในคอลัมน์ A จากนั้นสร้าง B เป็น Organization Unit Path ที่ต้องการ แล้วสร้าง C เป็น Password ที่ต้องการตั้ง และ D เป็น Status
ต่อไป เป็นขั้นตอนการเขียน Google Apps Script
- สร้าง Google Apps Scripts ใน Google Sheets นี้ ด้วยเมนู Tools > Script Editor … จากนั้นเลือก Blank Project แล้วกดปุ่ม Close
- ตั้งชื่อโปรเจค UpdateUser แล้วใส่โค๊ดดังนี้ (ปรับค่า firstRow และ lastRow ให้เหมาะสมตามต้องการ)
- ถ้าลอง Run เลย จะเจอ Error อย่างนี้
คลิก Continue -> Accept -> Dismiss
เพราะยังไม่ได้ Enable API ไว้
- เนื่องจากการสร้าง Account ต้องใช้สิทธิ์ของ Admin ขึ้นไป และต้องใช้ Admin SDK Directory API ด้วย วิธีการคือใช้เมนู Resources -> Advanced Google Services แล้วเลือก Admin Directory API เป็น On
- จากนั้นคลิกที่ Google Developers Consol
ที่ Admin SDK ให้เปลี่ยน ON
- เมื่อ Run ใหม่ ก็จะได้ผลใน Google Sheets ตามภาพ
- ผลที่ได้คือสามารถย้ายนักศึกษาลงไปใน OU ที่เหมาะสมได้
หวังว่าจะเป็นประโยชน์ครับ
-
วิธีใช้ Google Sheets สร้าง Account ใหม่ลงใน Sub Organization ของ GAFE
[บทความนี้ สำหรับผู้ที่มี GAFE Admin Privilege ขึ้นไป]
ในการสร้างบัญชีผู้ใช้ใหม่บน GAFE นั้นทำได้หลายวิธี ได้แก่
- การสร้างทีละคนผ่าน Admin Console
- การสร้างทีละหลายๆคนด้วย CSV File
- การสร้างทีละหลายๆคนผ่าน Google Apps Directory Sync
เมื่อต้องการสร้างผู้ใช้จำนวนมาก เช่น 5,500 คน โดยต้องจัดแบ่งผู้ใช้ แยกลงไปในแต่ละ Sub Organization วิธีที่ 1. ทำได้แต่เป็นงานที่หนักมาก วิธีที่ 2. ทำไม่ได้ เพราะการใช้ CSV File ผ่าน Admin Console นั้นจะสร้างผู้ใช้รวมกันที่ Root Organization ไม่สามารถแยกลงไปใน Sub Organization ได้ ส่วนวิธีที่ 3. นั้นทำได้ แต่ต้องเข้าใจกระบวนการทำงานของ LDAP พอสมควร
ในบทความนี้ จะนำเสนอวิธีการที่ ทำได้ง่ายเหมือนการใช้ CSV แต่สามารถแยกลงไปใน Sub Organization ได้ ด้วย Google Sheets และ Google Apps Script ดังต่อไปนี้ (ขอยกตัวอย่างเพียง 5 Account เพื่อความสะดวก)
- สร้าง Google Sheets แล้วใส่ข้อมูล email, firstname, lastname, OU, password, status
- สร้าง Google Apps Scripts ใน Google Sheets นี้ ด้วยเมนู Tools > Script Editor … จากนั้นเลือก Blank Project แล้วกดปุ่ม Close
- ตั้งชื่อโปรเจค AddMultiAccountToSubOU แล้วใส่โค๊ดดังนี้
- ถ้าลอง Run เลย จะเจอ Error อย่างนี้
คลิก Continue -> Accept -> Dismiss
เพราะยังงไม่ได้ Enable API ไว้
- เนื่องจากการสร้าง Account ต้องใช้สิทธิ์ของ Admin ขึ้นไป และต้องใช้ Admin SDK Directory API ด้วย วิธีการคือใช้เมนู Resources -> Advanced Google Services แล้วเลือก Admin Directory API เป็น On
- จากนั้นคลิกที่ Google Developers Consol
ที่ Admin SDK ให้เปลี่ยน ON
- เมื่อ Run ใหม่ ก็จะได้ผลใน Google Sheets ตามภาพ
- และจะสามารถสร้างผู้ใช้ได้ตาม Sub Organization ที่ต้องการ
หวังว่าจะเป็นประโยชน์ครับ
-
วิธีการใช้ Google Sheets เป็นระบบเฝ้าระวังเว็บไซต์ (Website Monitoring) จากภายนอกองค์กร
ในการเฝ้าระวังบริการเว็บไซต์ขององค์กร (Website Monitoring) ผู้ดูแลระบบมักจะจัดทำจากภายในระบบเครือข่ายขององค์กร แต่ไม่ได้เฝ้าระวังจากภายนอกระบบเครือข่ายขององค์กร ทำให้ไม่ทราบว่าภายนอกสามารถเข้าถึงเว็บไซต์ดังกล่าวได้หรือไม่จาก “วิธีการใช้ Google Sheets เป็นฐานข้อมูล” ซึ่งได้กล่าวถึงพื้นฐานการพัฒนา Google Apps Script เพื่อใช้ต่อยอดความสามารถของ Google Sheets สามารถนำมาประยุกต์ใช้เพื่อเฝ้าระวังบริการเว็บไซต์จากภายนอกระบบเครือข่ายขององค์กรได้ (จาก Google Cloud Infrastructure เลยทีเดียว)
ขั้นตอนในการทำ
- ในโปรเจค ProjectMyDB สร้างไฟล์ monitoring.gs ดังภาพ
- ประกอบด้วย 3 ฟังก์ชัน คือ
function check_website(url) { var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true}); return response.getResponseCode(); } function doLog(timestamp, responseCode, timeDiff) { var ss = SpreadsheetApp.openByUrl('https://docs.google.com/a/psu.ac.th/spreadsheets/d/1HJmyqiBYC_AEATmdUWakLgHFyYGqSqeqSA8xEw-8o-c/edit'); SpreadsheetApp.setActiveSpreadsheet(ss); SpreadsheetApp.setActiveSheet(ss.getSheetByName("Log")); var activeSheet=ss.getActiveSheet(); activeSheet.appendRow([timestamp, responseCode, timeDiff]); } function getTime() { var startTime = new Date() ; var responseCode=check_website("http://www.psu.ac.th"); var endTime = new Date() ; var timeDiff = endTime-startTime; doLog(Utilities.formatDate(new Date(), "GMT+7", "yyyyMMdd-HHmmss") , responseCode , timeDiff); }
- check_website ใช้ UrlFetchApp เพื่อ url ของเว็บไซต์ แล้วรีเทิร์นผล Response Code ของ HTTP Protocol กลับไป
- doLog ใช้สำหรับเพิ่มค่า timestamp, responseCode และ timeDiff (เวลาในการตอบสนอง) ลงใน Sheet “Log” ใน Google Sheets ที่กำหนดไว้
- getTime ใช้คำนวนเวลาตั้งแต่เริ่มต้น แล้วเรียกใช้ฟังก์ชั่น check_website และ จับเวลาที่สิ้นสุด จากนั้นคำนวนเป็นเวลาในการตอบสนอง (timeDiff) แล้ว เรียกฟังก์ขัน doLog เพื่อเขียนข้อมูลต่อไป
- สร้าง Trigger ด้วยเมนู Resources > Current project’s triggers
- เลือกฟังก์ชัน getTime กำหนดเป็น Time-driven ทำงานในหน่วยนาที (Minute timmer) และ ทำงานทุกๆ 5 นาที แล้วกดปุ่ม Save
- ผลการทำงาน และการสร้าง Chart ประกอบทำให้สามารถเห็นแนวโน้มได้
จากตัวอย่างข้างต้น ทำให้เห็นว่า การใช้ Google Apps Script ร่วมกับ Google Sheet สามารถสร้างระบบเฝ้าระวังเว็บไซต์จากภายนอกองค์กรได้อย่างง่ายๆ และไม่มีค่าใช้จ่าย ทำให้เห็นภาพการใช้งานจากภายนอกได้เป็นอย่างดี
- ในโปรเจค ProjectMyDB สร้างไฟล์ monitoring.gs ดังภาพ
-
วิธีการใช้ Google Sheets เป็นฐานข้อมูล
Google Sheets เป็นหนึ่งใน Google Apps ซึ่งเป็น Application Suite ของ Google ประกอบด้วย
ในการใช้งานทั่วไป Google Apps สามารถตอบสนองการใช้งานได้เป็นอย่างดี แต่เมื่อต้องการทำกิจกรรมบางอย่างที่นอกเหนือไปจากการใช้งานพื้นฐาน ผู้ใช้สามารถพัฒนาเพิ่มเติมได้เอง ด้วย Google Apps Script
Google Apps Script เป็น Scripting Language ที่อยู่บนพื้นฐานของภาษา JavaScript สามารถใช้งานได้และพัฒนาต่อยอดได้ทันทีโดยไม่ต้องติดตั้งอะไรเพิ่มเติมอีกแล้ว สามารถเรียกใช้ Google Service ต่างๆได้มากมาย รวมถึง Google Sheets เพื่อสร้าง เมนูพิเศษ หรือ Macro เพื่อให้การทำงานที่ทำหลายๆขั้นตอนลดลงเหลือเพียงแค่คลิกเดียว อีกทั้งยังสามารถตั้งเวลาให้ทำงานอัตโนมัติ หรือ ตั้ง Trigger เพื่อให้ทำงานเมื่อเกิด Action ต่างๆได้อีกด้วย
Google Apps Script มี 3 ชนิด ได้แค่ Standalone, Bound to Google Apps และ Web App ซึ่งจะสามารถใช้งานร่วมกับ Google Sites ได้อีกด้วย (Sites Gadget) รายละเอียดสามารถอ่านเพิ่มเติมได้ที่ Google Apps Script
ในที่นี้ จะแสดงตัวอย่างการประยุกต์ใช้ Google Apps Script แบบ Standalone เพื่อพัฒนาให้ Google Sheets ทำหน้าที่เป็นฐานข้อมูล และจะนำไปสู่การต่อยอดเป็น วิธีการใช้ Google Sheets เป็นระบบเฝ้าระวังเว็บไซต์ (Website Monitoring) จากภายนอกองค์กร เพื่อตรวจสอบระยะเวลาในการตอบสนอง ( Response Time) ของเว็บไซต์ ได้อีกด้วย
วิธีการใช้งาน Google Apps Script แบบ Standalone
- ใน Google Drive คลิก New > More > Connect more apps
- ในชื่อ search ใส่คำว่า script แล้วกด Enter
จะพบ Google Apps Script แล้วกดปุ่ม Connect
- จากนั้น ใน Google Drive ให้คลิกที่ New > More > Google Apps Script
- จากนั้นให้คลิก Close ได้เลย
- จะได้พื้นที่โปรเจค (Project) ในการพัฒนา Google Apps Script โดยในแต่ละโปรเจคจะประกอบไปด้วยหลายๆไฟล์ Google Apps Script ได้
ในการพัฒนา Google Apps Script นั้น จะต้องเขียนในรูปแบบของฟังก์ชั่น (Function) เพื่อให้สะดวกในการใช้งานต่างๆ
ตัวอย่างเช่น มี Google Sheets อยู่ใน Google Drive ดังภาพ
มีรายละเอียดดังนี้
- ชื่อของ SpreadSheet คือ “ฐานข้อมูลของฉัน”
- ประกอบไปด้วย Sheet ชื่อ “Sheet1” และ “Log”
- มี URL คือ
https://docs.google.com/a/psu.ac.th/spreadsheets/d/1HJmyqiBYC_AEATmdUWakLgHFyYGqSqeqSA8xEw-8o-c/edit
ต่อไปเป็นขั้นตอนการเขียน Google Apps Script เพื่อติดต่อกับ Google Sheet ข้างต้น เพื่อเขียนข้อมูลลงไป โดยตั้งชื่อโปรเจคนี้ว่า ProjectMyDB ตั้งชื่อไฟล์ว่า SheetDB.gs และตั้งชื่อฟังก์ชั่น “editSheet” ดังภาพ
ขั้นตอนการทำงานของฟังก์ชั่น editSheet
- สร้างตัวแปร ss รับค่าจากการเปิด SpreadSheet จาก URL ข้างต้นด้วยคำสั่ง
var ss = SpreadsheetApp.openByUrl('https://docs.google.com/a/psu.ac.th/spreadsheets/d/1HJmyqiBYC_AEATmdUWakLgHFyYGqSqeqSA8xEw-8o-c/edit');
- สั่งให้ SpreadSheet ดังกล่าว Active ด้วยคำสั่ง
SpreadsheetApp.setActiveSpreadsheet(ss);
- เนื่องจากในแต่ละ SpreadSheet ประกอบด้วยหลาย Sheet จึงต้องระบุว่า จะทำงานกับ Active Sheet ชื่อ “Sheet1” ด้วยคำสั่ง
SpreadsheetApp.setActiveSheet(ss.getSheetByName("Sheet1"));
- สร้างตัวแปร activeSheet เพื่อกำหนดว่ากำลังทำงาน Active Sheet ด้วยคำสั่ง
var activeSheet=ss.getActiveSheet();
- เมื่อต้องการเขียนค่า “Hello World” ลงใน Active Sheet ที่ Cell “C3” ใช้คำสั่ง
activeSheet.getRange("C3").setValue("Hello World");
- หากต้องการเขียนค่าทีละหลายๆ Cell หรือเป็น Range ต้องสร้างข้อมูลชนิด Array 2 มิติขึ้นมา แล้วจึงเขียนค่าลงไป กรณีต้องการใส่ค่าในช่วง “A1:C1” ใช้คำสั่ง
var values =[ ["คณกรณ์","หอศิริธรรม","'3720024"] ]; activeSheet.getRange("A1:C1").setValues(values);
- หากต้องการเขียนค่าในช่วง “A2:A4” ใช้คำสั่ง
values = [ ["เกรียงไกร"],["หนูทองคำ"],["'4220020"] ]; activeSheet.getRange("A2:A4").setValues(values);
- เมื่อจะเก็บข้อมูลจริงๆ วิธีการข้างต้นจะไม่สะดวก เพราะจะต้องทราบว่าแถวสุดท้ายแล้วเพิ่มค่าแถวไปทีละหนึ่ง ซึ่งสามารถใช้วิธีการ Append Row กล่าวคือเขียนค่าลงไปในแถวถัดจากแถวล่าสุดที่มีข้อมูลได้ ในตัวอย่างนี้ จะสลับไปใช้ Sheet ชื่อ “Log” แล้วใส่ค่าลงไปด้วยคำสั่ง
SpreadsheetApp.setActiveSheet(ss.getSheetByName("Log")); activeSheet=ss.getActiveSheet(); var timestamp = new Date(); activeSheet.appendRow([timestamp, 200 , 300]); timestamp = new Date(); activeSheet.appendRow([timestamp, 200 , 456]);
จากนั้น Save ข้อมูล แล้วสั่ง Run โดยเลือกฟังก์ชั่นชื่อ editSheet ดังภาพ
ในการใช้งานครั้งแรก จะปรากฏหน้าต่าง Consent ขึ้นมาเพื่อขอสิทธิ์ในการเข้าใช้ไฟล์
ผลที่ได้จากการทำงานคือ
และ
จะเห็นได้ว่าสามารถใช้ Google Apps Script เพื่อเขียนค่าใน Google Sheets เพื่อเป็นฐานข้อมูลได้ และสามารถประยุกต์ใช้งานอื่นๆได้อีกมากมาย
- ใน Google Drive คลิก New > More > Connect more apps