แนวทางการใช้ Spreadsheet เป็น Directory ด้วย Google Apps Script

องค์กรที่ใช้งาน Google Apps จะมีผู้ดูแลระบบ ที่คอยดูแลผู้ใช้งานในระบบ Google Apps เช่น การสร้างบัญชีผู้ใช้สำหรับพนักงานใหม่ การแก้ไขชื่อ นามสกุล และอีเมล เมื่อพนักงานมีการเปลี่ยนชื่อ หรือนามสกุล (เช่น กรณีพนักงานแต่งงานและเปลี่ยนนามสกุล) การ suspend ผู้ใช้ที่พ้นสภาพพนักงาน หรือการลบบัญชีที่ไม่ใช้งานแล้ว เพื่อจะได้นำ license มาใช้งานต่อไป

การสร้าง แก้ไข ลบ user คืองานพื้นฐานของ admin และมีกำหนดเป็นหัวข้อในการสอบใบรับรองด้วย

การจัดการส่วนนี้สามารถทำได้ผ่านหน้า Control Panel ของระบบ Google Apps ซึ่งองค์กรที่มีพนักงานไม่มากนัก มักจะมีการเปลี่ยนแปลงส่วนนี้ไม่บ่อย ผู้ดูแลระบบสามารถจัดการงานส่วนนี้ได้จากหน้า Control Panel โดยไม่ลำบาก ส่วนในองค์กรขนาดใหญ่ มักจะมีการเปลี่ยนแปลงข้อมูลพนักงานเกือบทุกวัน และวันหนึ่งก็มีจำนวน transaction เยอะและหลายรูปแบบ ซึ่งองค์กรในระดับนี้มักจะมี directory กลางขององค์กร ที่เป็นศูนย์รวมของบัญชีผู้ใช้ของทุกระบบในองค์กรนั้นๆ ได้แก่ LDAP (Lightweight Directory Access Protocol) server เช่น Microsoft Active Directory

directory กลางสำหรับจัดการข้อมูล user, group ขององค์กร

Google Apps สามารถเชื่อมต่อกับ directory กลางขององค์กร โดยการใช้ตัว sync ข้อมูล ชื่อว่า Google Apps Directory Sync (GADS) ทำการดึงข้อมูลจาก directory ขององค์กร มา update บน Google ช่วยให้ ผู้ดูแลระบบจัดการข้อมูล directory ที่จุดเดียว และ update ข้อมูล directory ไปยัง Google Apps โดยอัตโนมัติ

GADS จะคอยดึงข้อมูลจาก directory มา update บน Google Apps ให้อัตโนมัติ

สำหรับองค์กรขนาดกลางนั้น หลายๆ แห่งที่ไม่มี directory กลางขององค์กร การจัดการข้อมูลผู้ใช้บน Google Apps ยังคงต้องจัดการผ่าน Control Panel แต่ transaction ที่เกิดขึ้นเยอะกว่าองค์กรขนาดเล็ก ก็ส่งผลให้ผู้ดูแลระบบทำงานได้ลำบากมากขึ้น ลองนึกภาพผู้ดูแลระบบที่ต้องมาคอยสร้าง คอยลบบัญชีผู้ใช้งานเกือบทุกวัน คงไม่น่าสนุกนัก ครั้นการจะติดตั้งระบบ directory กลางขึ้นมาก็ไม่สามารถทำได้ทันที แม้ว่าในระยะยาวจะสะดวกกว่า แต่ในระหว่างที่ยังไม่มี directory ผู้ดูและระบบก็คงต้องทนทำงานซ้ำๆ แบบ manual ต่อไป

วันนี้ผมจะมาเสนอแนวทางที่จะช่วยแก้ปัญหาดังกล่าวได้ โดยเราจะสร้าง directory ง่ายๆ ขึ้นมาใช้งานบน spreadsheet และให้ Google Apps Script ช่วยจัดการงานประจำวันง่ายๆ ให้เราครับ

สำหรับใครที่ไม่รู้จัก Google Apps Script แนะนำให้อ่านบทนี้ก่อน
ปฏิวัติอุตสาหกรรมในบริษัท ด้วย Google Apps Script

ออกแบบ column ของข้อมูล

การออกแบบ column ใน spreadsheet ก็คือการออกแบบ meta data ของข้อมูลที่เราจะใช้ อยู่ที่ว่าเราอยากจะใช้ข้อมูลนั้นทำอะไรบ้าง จะทำให้เรารู้ว่าเราต้องมีข้อมูลอะไรบ้าง และนั่นจะกลายมาเป็น column ใน spreadsheet ของเรา

spreadsheet ที่ผมออกแบบสำหรับใช้เป็น directory อย่างง่ายจะมี column ดังนี้
  • Action: สำหรับระบุว่าเราต้องการทำอะไรกับ user นั้นโดยจะมี value เป็น CREATE, RENAME, SUSPEND และ DELETE
  • UID: เป็น key ของ user ที่เราจะดึงมาจาก Google Apps ใช้ในกรณีที่เราสั่ง rename
  • First name: required
  • Last name: required
  • Email: required
  • Password: required
ตัวอย่าง column ที่ออกแบบไว้

เตรียมข้อมูลลง spreadsheet

ขั้นต่อมา เราจะเตรียมข้อมูลใส่ลงใน spreadsheet โดยจะเตรียมข้อมูลจากการ export รายชื่อผู้ใช้จากหน้า Control Panel หรือจะดึงข้อมูลด้วย Google Apps Script มาลง spreadsheet ก็ตามความถนัดครับ

ตัวอย่าง script สำหรับดึงข้อมูลจาก Google Apps มาใส่ใน spreadsheet

เขียน script สำหรับสั่งทำงาน

script ที่เราเขียนขึ้นมานั้น จะ scan หาคำสั่งใน column "Action" ว่ามีคำสั่งระบุไว้หรือไม่ ถ้าเจอก็จะจัดการตามนั้น

ตัวอย่าง script ที่จะทำงานตามที่เราระบุไว้ใน column 'ACTION'

ตั้งเวลา sync ประจำวัน

เมื่อ script เราทำงานได้แล้ว เราสามารถตั้ง trigger เพื่อให้ script ทำงานโดยอัตโนมัติ โดยเราเพียงแค่ใส่ข้อมูล และ Action ที่ต้องการไว้ เมื่อถึงเวลา script จะจัดการให้เราตามกำหนด

ตั้ง trigger เพื่อให้ script ทำงานโดยอัตโนมัติ

ตัวอย่าง script ที่ยกมานี้ เพื่อเป็นแนวทางเบื้องต้นเท่านั้นนะครับ เพราะแต่ละที่อาจจะมี requirement ปลีกย่อย เช่น ต้องการให้เพิ่ม user ใหม่ลง group ด้วยเลย หรือต้องการระบุ user  ลงในแต่ละ OU พร้อมกัน หรือว่าจะเพิ่มขั้นตอนการสุ่ม password สำหรับ user ใหม่ไว้ด้วย หรือการระบุข้อมูลลง log เพื่อความสะดวกในการ troubleshoot ก็เป็นไปได้ทั้งหมด สำหรับใครที่เป็นผู้ดูแลระบบ Google Apps อยู่ และกำลังหาตัวช่วยในการจัดการ user ได้ง่ายๆ แบบนี้ ก็สามารถติดต่อเข้ามาพูดคุยกันได้ครับ

Comments

Popular posts from this blog

ป้องกันอีเมลสวมรอย (Email spoofing) ด้วย SPF, DKIM และ DMARC

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