เก็บข้อมูล LINE User ด้วย Google Sheets — LINE Bot PHP EP.4

Aeknarin Sirisub
LINE Developers Thailand

--

น้องกวิ้นน กลับมาแล้วจ้า ห่างหายไปนานหลายเดือน หวังว่าเพื่อนๆจะยังไม่ลืมน้องกวิ้นกันนะจ๊ะ ระหว่างที่น้องกวิ้นไม่อยู่ก็ได้รับข่าวดีว่าเราได้มี LINE API Expert เพิ่มอีก 1 คน นั่นก็คือออออ พี่กอล์ฟ นั่นเองง เอ้าปรบมือ(ฮิ้ว ฮิ้ว) ส่วนใครที่อยากรู้จักว่าพี่กอล์ฟเป็นใครมาจากไหน บ้านอยู่ที่ใด ก็ไปติดตามฟังได้จาก Podcast นี้ได้เลย

เอาหละมาเข้าเรื่องของเรากันดีกว่า วันนี้กวิ้นจะมาพาเพื่อนๆสร้างฐานข้อมูลง่ายๆโดยใช้ Google Sheets ในการเก็บข้อมูลของ LINE User แต่กวิ้นต้องขอบอกเพื่อนๆก่อนว่าการเก็บข้อมูลด้วย Google Sheets เหมาะสำหรับการเก็บข้อมูลที่ไม่ซับซ้อนมาก และ ไม่มีการเชื่อมโยงข้อมูล นะจ๊ะ ถ้าเพื่อนๆพร้อมแล้วก็มาลุยกันเลย

PART 1 — Register API Google Sheets

ก่อนอื่นให้เราเข้าไปที่ https://console.developers.google.com/ เพื่อที่เราจะได้ทำการ Register API กันก่อน ซึ่งพอกด Link เข้ามาแล้วจะเจอหน้าจอสำหรับ Login โดยที่เราสามารถใช้ Account Google ของเราเองในการ Login เข้าไปได้เลย

หลังจาก Login เข้ามาแล้ว ถ้าเราพึ่งเข้ามาเป็นครั้งแรกจะเจอ Popup ขึ้นมาให้ทำการอ่าน เงื่อนไขการใช้งาน และทำการกดติ๊กถูกเพื่อยอมรับเงื่อนไข หลังจากนั้นให้กดปุ่ม AGREE AND CONTINUE ที่มุมล่างขวาของ Popup

ต่อมาเราจะทำการสร้าง Project กันก่อนโดยการคลิ๊กที่ CREATE PROJECT

จากนั้นให้เราทำการใส่ชื่อ Project ของเราลงไป และ ทำการกดปุ่ม CREATE

หลังจากสร้าง Project เสร็จแล้วเราจะทำการเชื่อมต่อไปที่ Library Google Sheets โดยให้เราคลิ๊กไปที่ ENABLE APIS AND SERVICES

ให้พิมพ์คำค้นหาว่า “Sheets” แล้วจะเจอ Library ของ Google Sheets API ขึ้นมาให้เลือก

เมื่อกดเลือกไปที่ Google Sheets API แล้วให้กดปุ่ม ENABLE

เมื่อกด ENABLE แล้วจะขึ้นเป็นหน้า Dashboard แบบนี้ขึ้นมาไว้สำหรับ Monitor การใช้งาน API

ต่อมาให้เราไปที่ Menu Credentials ซึ่งในขั้นตอนนี้เราจะทำการสร้าง User สำหรับเชื่อมต่อระหว่าง API กับ Google Sheets รวมถึงการสร้างไฟล์ Credentials ซึ่งเราจะนำไปใช้สำหรับตอนเขียน Code อีกด้วย

เมื่อเข้ามาใน Menu Credentials แล้วให้กดไปที่ Manage service accounts

หลังจากนั้นให้กดไปที่ CREATE SERVICE ACCOUNT

เมื่อกดปุ่ม CREATE SERVICE ACCOUNT มาแล้วให้ทำการใส่ข้อมูลตามช่อง
Service account name : ระบุชื่อ Service ที่ต้องการ (ระบุอะไรก็ได้)
Service account ID : กำหนด Service account ID (ระบุอะไรก็ได้)
Service account description : ระบุรายละเอียดเพิ่มเติม (ไม่กรอกได้)
เมื่อใส่ข้อมูลครบแล้วให้กดปุ่ม CREATE

หน้าต่อมาจะเป็นการกำหนดสิทธิ์ของ User ที่เราสร้างขึ้นมาว่าต้องการให้เข้าถึงข้อมูลได้ในระดับไหน
Owner : สามารถทำได้ทุกอย่างเทียบเท่าเจ้าของ Project
Editor : มีสิทธิ์ในการแก้ไขข้อมูลได้
Viewer : สามารถเข้ามาดูข้อมูลได้เพียงอย่างเดียว
Browser : จะเข้าถึงข้อมูลในหน้า Dashboard และ GCP ได้
ซึ่งในกรณีนี้กวิ้นจะกำหนดให้เป็น Owner ไปเลย เมื่อกำหนดสิทธิ์เสร็จแล้วให้กดปุ่ม CREATE

หลังจากกดปุ่ม CREATE แล้วในหน้านี้เราจะทำการสร้างไฟล์ Credentials กันโดยให้กดไปที่ปุ่ม CREATE KEY

หลังจากนั้นให้เลือกประเภทไฟล์เป็น JSON และกด CREATE

เมื่อกด CREATE แล้วเราจะได้ไฟล์ JSONมาให้เราเก็บไฟล์ JSONนั้นเอาไว้นะครับ และให้กดปุ่ม DONE

หลังจากที่เรากดปุ่ม DONE เรียบร้อยแล้วให้เราทำการ Copy User ที่ระบบสร้างเอาไว้เพราะว่าเดี๋ยวเราจะต้องใช้ในการเชื่อมต่อกับ Google Sheets

PART 2— Create Google Sheets AND Share

เอาหละ มาถึงขั้นตอนที่ 2 กันแล้วนะฮะ ให้เราเข้าไปที่ Google Drive ของเรา https://drive.google.com หลังจากนั้นให้เราทำการสร้าง Google Sheets ขึ้นมา

หลังจากนั้นให้เราทำการ Share สิทธิ์ในการเข้าถึง Google Sheets โดยการกดที่ปุ่ม Share ที่มุมบนขวา

ต่อมาให้ทำการตั้งชื่อ Google Sheets ของเราเสร็จแล้วให้กดปุ่ม SAVE

ขั้นตอนต่อไปให้เราทำการใส่ User ที่ได้รับมาจากในขั้นตอนที่แล้วลงไป และ ทำการกำหนดสิทธิ์ในการเข้าถึง Google Sheets โดยการคลิ๊กที่รูปดินสอข้างหลัง
Can Edit : สามารถแก้ไขได้
Can Comment : สามารถเข้ามา Comment ได้แต่แก้ไขไม่ได้
Can View : สามารถเข้ามาดูได้แต่แก้ไขไม่ได้

หลังจากนั้นให้กดปุ่ม Send เท่านี้เราก็จะจบขั้นตอนการ Share แล้วครับผม

PART 3— Coding Time

ได้เวลา Coding กันแล้วว เริ่มต้นโดย Clone Git นี้ได้เลย https://github.com/aeknarinamn/PHPGoogleAPIsSheet และเมื่อทำการ Clone ลงมาแล้วให้เปิด File googleSheetsAPI.php ขึ้นมา ใน Code ตัวนี้จะมีส่วนของการ GET LINE User Profile อยู่แล้ว สามารถหาอ่านเพิ่มเติมได้ที่

เอาหละสิ่งที่เราจะแก้ไขใน Code นี้กันในส่วนแรกก็คือ แก้ไข Channel Access Token ของ LINE นั่นเอง โดยให้นำ Access Token ที่ได้มาจาก LINE มาใส่ใน บรรทัดที่ 19

ต่อมาให้เราทำการย้าย ไฟล์ JSON ที่ได้รับมาให้อยู่ใน Folder เดียวกับ Code ที่ Clone มาจาก Git และให้ทำการแก้ไขชื่อไฟล์ตามที่เราได้รับมาในบรรทัดที่ 35

ต่อมาให้ทำการเปลี่ยน Google Sheets ID โดยเปลี่ยนที่บรรทัด 41โดยที่ Google Sheets ID สามารถหาได้จาก URL ของ Google Sheets

เมื่อแก้ไขข้อมูลเสร็จแล้วเราก็พร้อมที่จะเก็บข้อมูลกันแล้วววว ไหนลองมาดูผลลัพธ์กัน

ถ้ามีข้อมูลขึ้นแบบนี้แปลว่าเราเก็บข้อมูลสำเร็จแว้ววว

PART 4— Explain Code

มาถึง Part ที่ 4 กวิ้น จะอธิบาย Code และวิธีการใช้งานของ Function ต่างๆ กัน มาเริ่มที่ Function แรกกันก่อนนั่นก็คือ

Function insertData

Function นี้เราจะใช้ในการ insert row เข้าไปใน Google Sheets ตัวแปรที่สำคัญก็คือ
$range : คือการกำหนด row เริ่มต้นในการที่เราจะ insert เข้าไปอย่างเช่นถ้าเรากำหนดเป็น a2 เมื่อมีการ insert row เข้าไปข้อมูลจะถูกบันทึกอยู่ที่ row a2 นอกจากนี้เรายังสามารถกำหนดเป็น Range ได้เช่น เราต้องการบันทึกข้อมูลเข้าไปที่ a2,b2,c2 ก็สามารถกำหนดเป็น a2:c2 ได้เลย
$values : คือการกำหนดข้อมูลที่เราต้องการนำเข้า Row ตามการกำหนดของ $range ถ้าหากเราต้องการที่จะนำเข้าข้อมูลเข้าไปใน row หลาย column เราก็สามารถที่จะใส่เป็น array แบบนี้ได้ [“test1”,“test2”]
เมื่อเราทำการเริ่มบันทึกข้อมูลถ้า $range ที่กำหนดมีข้อมูลอยู่แล้วระบบจะทำการบันทึกใน row ถัดไปให้ทันที

Function updateData

Function นี้เราจะใช้สำหรับการ update ข้อมูลใน row นั่นเองนะครับโดยหลักการก็จะคล้ายๆกับการ insert ต่างกันตรงที่ range ที่ถูกกำหนดจะถูกแทนที่
$range : คือการกำหนด row ที่เราต้องการจะแทนที่ เช่น a2 หรือกำหนดเป็น range เช่น a2:b2
$values : คือการกำหนดข้อมูลที่เราต้องการแทนที่ลงไป

Function getData

Function นี้ใช้สำหรับเรียกดูข้อมูลจาก Google Sheets โดยเราสามารถกำหนด range ที่เราต้องการได้
$range : ใช้สำหรับกำหนด range ของข้อมูลที่เราต้องการโดยการกำหนดเราต้องกำหนดให้ครอบคลุมทั้ง row และ column เช่น a2:d4 จะเป็นการเรียกดึงข้อมูลตั้งแต่ row ที่ 2 column a ไปจนถึง row ที่ 4 column d

เป็นอย่างไรกันบ้างครับกับ EP.4 ที่พาเพื่อนๆมาสร้างฐานข้อมูลง่ายๆบน Google Sheets หวังว่าเพื่อนๆ จะได้ความรู้จากบทความนี้กันนะครับ ช่วงนี้สถานกาณ์ Covid-19 กำลังรุนแรง อยากให้ทุกคนรักษาสุขภาพ และ พยายามไม่ออกไปไหน อยู่บ้านเขียน code กันดีกว่านะจ๊ะ ส่วนนี้ กวิ้นต้องขอตัวไปก่อน จนกว่าจะเจอกันใหม่ EP หน้า บ๊ายบายยยยย

ตอนนี้ LINE Developers เรามีแฟนเพจแล้วนะจ๊ะอย่าลืมไปกด LIKE กันด้วยนะ

https://www.facebook.com/LINEDEVTH

ส่วนใครที่ยังไม่ได้เข้าร่วมกลุ่มกับเรา คลิ๊กที่นี่ได้เลย

https://www.facebook.com/groups/LINEDEVTH

Resources

Developer console
https://developers.line.biz/en/

Messaging API Document
https://developers.line.biz/en/docs/messaging-api/

Messaging API Reference
https://developers.line.biz/en/reference/messaging-api/

Google Sheets API
https://developers.google.com/sheets/api

--

--