วิธีใช้ 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 ที่ต้องการ หวังว่าจะเป็นประโยชน์ครับ

Read More »

วิธีการใช้ 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 สามารถสร้างระบบเฝ้าระวังเว็บไซต์จากภายนอกองค์กรได้อย่างง่ายๆ และไม่มีค่าใช้จ่าย ทำให้เห็นภาพการใช้งานจากภายนอกได้เป็นอย่างดี

Read More »

วิธีการใช้ 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” ดังภาพ

Read More »

สร้างแบบฟอร์มลงทะเบียนออนไลน์ด้วย Google Form ให้ปิดการลงทะเบียนแบบอัตโนมัติเมื่อครบตามจำนวนที่ต้องการ

อีกหนึ่งปัญหาของการใช้งาน Google Form เพื่อสร้างแบบฟอร์มลงทะเบียนออนไลน์ ที่ผมได้เจอมากับตัวเองคือ ไม่สามารถจำกัดจำนวนผู้ที่มาลงทะเบียนแบบออนไลน์ได้ ทั้ง ๆ ที่การจัดอบรม/สัมมนาต่าง ๆ เราประกาศว่า “รับจำนวนจำกัด” จึงเป็นที่มาของการหาคำตอบในครั้งนี้ครับ ว่า… “ทำอย่างไร ให้แบบฟอร์มลงทะเบียนออนไลน์ (Google Form) สามารถปิดการลงทะเบียนได้ เมื่อมีผู้สมัครครบตามจำนวนที่ต้องการ ?” ** หมายเหตุ ** การใช้ Script : formLimiter v.1.0.2 นี้ จะสามารถใช้ได้กับ Google Spreadsheets “เวอร์ชั่นเก่า” เท่านั้นครับ เวอร์ชั่นปัจจุบัน ไม่สามารถใช้งานได้ เนื่องจาก Google ได้มีการเปลี่ยนแปลงการใช้งานของ Script ใหม่จาก Script Gallery ไปเป็น Add-ons ครับ Script Gallery ==> Add-ons ซึ่ง formLimitter นั้น ผู้พัฒนายังไม่ได้พัฒนาเข้าไปอยู่ใน Add-ons  จึงทำให้หลาย ๆ ท่าน ที่สร้าง Google Spreadsheets ด้วยเวอร์ชั่นปัจจุบัน ไม่สามารถใช้งาน Script อันนี้ได้ครับ ดังนั้น หากผู้ใช้งาน ต้องการใช้ Script ดังกล่าว แนะนำว่าให้สร้าง Google Spreadsheets ด้วยเวอร์ชั่นเก่า นะครับ สามารถเข้าไปสร้างผ่านลิงค์ด้านล่างนี้ได้เลยครับผม goo.gl/pprjA5 1. ไปที่มุมมองของ View responses จากนั้น คลิกเมนู Tools > เลือก Script gallery… แล้วค้นหา Script ที่ชื่อว่า “formLimiter” ในช่อง Search แล้วคลิกปุ่ม Search เมื่อปรากฎ  “formLimiter v.1.0.2” ให้ดำเนินการติดตั้ง โดยคลิกปุ่ม Install คลิกปุ่ม Continue > ปุ่ม Accept > และปุ่ม Close เป็นอันเสร็จเรียบร้อย 2. จะเห็นว่ามีเมนูที่ชื่อว่า formLimiter ปรากฎเพิ่มขึ้นมาใหม่ จากนั้นให้ คลิกเมนู formLimiter > เลือก Run initial configuration เพื่อเปิดการใช้งาน Script เมื่อเปิดการใช้งานเรียบร้อย เมนูย่อยจะเปลี่ยนไปดังภาพด้านล่าง ให้ คลิกเลือก Settings 3. ในส่วนนี้จะเป็นการกำหนดเงื่อนไขของการ “ปิดแบบฟอร์มการลงทะเบียนออนไลน์” ซึ่งจะมีด้วยกัน 3 เงื่อนไขให้เลือกใช้ ดังนี้  3.1  date and time – ใช้ในกรณีที่กำหนดให้ปิดการลงทะเบียนเป็นช่วงของเวลา โดยไม่จำกัดจำนวนผู้สมัคร 3.2  max number of form response – ใช้ในกรณีที่ต้องการรับผู้สมัครแบบจำกัดจำนวน 3.3  spreadsheet cell value – ใช้ตรวจสอบเงื่อนไขตามค่าของข้อมูลใน cell จะปิดการลงทะเบียนเมื่อข้อมูลใน cell ตรงกับค่าที่ได้กำหนดไว้ ในส่วนนี้ผมขอให้เลือกเป็น spreadsheet cell value นะครับ โดยให้กำหนดเงื่อนไขในลักษณะดังนี้ ช่องแรก ให้ระบุ Cell ที่ใช้เป็น “Sheet2!A1” และ ช่องสอง ให้ระบุจำนวนที่ต้องการรับลงทะเบียน (ในที่นี้ผมกำหนดรับที่ 50 คน) แนะนำว่า ให้นำเครื่องหมายถูกออก เนื่องจากระบบจะทำการส่งเมลทุกครั้งที่มีการลงทะเบียน อาจทำให้เกิดอีเมลขยะจากการแจ้งเตือนเป็นจำนวนมากได้ (กรณีที่รับผู้สมัครจำนวนมาก) จากนั้น คลิกปุ่ม Save settings เป็นอันเสร็จสิ้น 4. ขณะนี้เรายังอยู่ในหน้าของ View response ให้ทำการสร้าง “Sheet2” เพิ่มขึ้นอีกหนึ่ง เพื่อใช้ในการนับจำนวนผู้สมัคร (ดังภาพ) โดยให้กำหนดเงื่อนไขใน Cell

Read More »

สร้างแบบฟอร์มลงทะเบียนออนไลน์ด้วย Google Form ให้ตอบรับผ่านทางอีเมลโดยอัตโนมัติ

เนื่องจากว่ามีผู้สอบถามถึงการใช้งานแบบฟอร์มลงทะเบียนออนไลน์ แบบให้สามารถตอบรับผ่านทางอีเมลโดยอัตโนมัติไปยังผู้สมัครเมื่อเข้ามาลงทะเบียน ผมเห็นว่าน่าจะมีประโยชน์สำหรับ Admin หรือผู้ใช้งาน Google Form หลาย ๆ ท่าน จึงได้สรุปเป็นขั้นตอน ตามที่ผมได้ทำมา หวังว่าจะเป็นประโยชน์ให้กับทุก ๆ ท่านนะครับ ** หมายเหตุ ** เนื่องจาก Google ได้มีการเปลี่ยนแปลงการใช้งานของ Script ใหม่ จาก Script Gallery ไปเป็น Add-ons ครับ Script Gallery ==> Add-ons ซึ่งบทความที่ผมเขียนขึ้นนี้ ขออ้างอิงเมนูและการใช้งาน Google Spreadsheets เวอร์ชั่นเก่านะครับ ดังนั้น หากผู้ใช้งาน ต้องการใช้งาน Google Spreadsheets เวอร์ชั่นเก่า สามารถเข้าไปสร้างผ่านลิงค์ด้านล่างนี้ได้เลยครับผม goo.gl/pprjA5 1. คลิก Form  เพื่อสร้างแบบฟอร์มลงทะเบียนออนไลน์ 2. กำหนดรายละเอียดข้อมูลของแบบลงทะเบียนตามที่ต้องการ (ในส่วนนี้จะไม่ขออธิบายรายละเอียดในการสร้างแบบฟอร์ม นะครับ) 3. คลิก View response เข้าสู่มุมมองของ View responses เพื่อกำหนดต่าง ๆ 4. คลิกเมนู Tools > เลือก Script manager… (เป็นส่วนจัดการ Script ต่าง ๆ) จากนั้น คลิกปุ่ม New เพื่อสร้าง Script สำหรับการส่งอีเมลแบบอัตโนมัติ ตั้งชื่อไฟล์ Script ใหม่ โดยใช้ชื่อว่า “sendEmail” จากนั้น Copy Script ด้านล่างนี้ วางไว้ดังภาพข้างต้น ** ข้อมูลนี้เป็นข้อมูลจำลอง เพื่อให้สามารถเข้าใจในรายละเอียดของ Script ได้ เมื่อผู้ใช้งานนำไปใช้จริง สามารถแก้ไขรายละเอียดได้ตามความเหมาะสม ** function sendEmail(e) { var userEmail = e.values[4]; var firstName = e.values[1]; var trainingTitle = “อบรมการใช้โปรแกรม Smart Notebook sympodium & Smart board สำหรับการจัดการเรียนการสอนทางไกล”; var infoLink = “http://clpd.psu.ac.th/clpd_2012”; var emailAdd = “clpdpsu@psu.ac.th”; var subject = “ศูนย์ส่งเสริมและพัฒนาการเรียนรู้ ม.อ. : ตอบรับเข้าร่วมอบรมโครงการเชิงปฏิบัติการ” var emailBody = “เรียนคุณ: “+firstName+”\n\n ท่านได้ทำการลงทะเบียนเข้าร่วมโครงการ”+ “หัวข้อ \”” + trainingTitle + “\””+ ” ในวันพุธที่ 16 กรกฎาคม 2557 เวลา 09.00-16.00 น.”+ ” ณ ห้องอบรม ชั้น 8 อาคารศูนย์ทรัพยากรการเรียนรู้ อาคาร 1 มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตหาดใหญ่”+ “\n ทางศูนย์ส่งเสริมและพัฒนาการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์ ตอบรับการเข้าร่วมโครงการดังกล่าวแล้วค่ะ”+ “\n”+ “\n ติดตามการประกาศรายชื่อผู้มีสิทธิ์เข้าร่วมอบรมโครงการอีกครั้งได้ที่: ” + infoLink + “\n”+ “\n”+ “\nขอบคุณสำหรับการลงทะเบียนเข้าร่วมโครงการค่ะ”+ “\n”+ “\nศูนย์ส่งเสริมและพัฒนาการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์”+ “\nโทรศัพท์ : 074-289203-4″+ “\nE-mail : ” + emailAdd; MailApp.sendEmail(userEmail , subject, emailBody); } หมายเหตุ อักษรสีแดง คือ ข้อความที่สามารถแก้ไขได้ อักษรสีฟ้า

Read More »