[PHP]Linebot+Google Sheet และการค้นหาซ้ำซ้อน
เนื่องจากวันก่อนมีคนถามเรื่องการค้นหาและให้บอทตอบเป็นตัวเลือกเพื่อที่จะค้นหาต่อ
ก็เลยไปหาวิธีอยู่หลายวันและสรุปได้ว่า
ทำได้โดยการ get data json จาก google sheet แล้วนำ filter array มากรองคำค้นแรก จากนั้นบันทึก json ที่กรองแล้วกลับเข้าไฟล์ data.json และสร้างเงื่อนไขใน user อยู่ใน mode การค้นหาซ้ำ ตาม keyword ที่ให้เลือก
file ตัวอย่าง : https://itdev.win/bot.zip
เริ่มจากเตรียมข้อมูลที่ต้องการค้นหา (ตัวอย่าง)
เครื่องมือ > โปรแกรมแก้ไขสคริปต์
วางโค๊ดจากไฟล์ตัวอย่างลงไป ขออธิบายแค่ส่วนที่สำคัญ
var record = {};
record[‘id’] = dataRow[0];
record[‘name’] = dataRow[1];
record[‘num’] = dataRow[2];
record[‘other’] = dataRow[3];
// เพิ่ม dataRow ตามต้องการ record[‘ชื่อคอลั่ม’] = dataRow[เรียงไปเรื่อยๆ];
dataArray.push(record);
กดเผยแพร่ > ใช้งานเป็นแอพพลิเคชั่นเว็บ
ตรงนี้ถ้าติดปัญหาอะไร ค้นในกูเกิ้ลเจอแน่นอน >>>ไปต่อ
เมื่อเราได้ URL มาให้ลองเข้าดู
จะได้ข้อมูลที่ต้องการในรูปแบบ json เป็นที่เรียบร้อย
จากนั้นไปต่อที่ไฟล์ bot.php
ขออธิบายคร่าวๆ
line 44–51 : ใช้ array filter กรองด้วยคำค้นแรก
line 53–58 : เมื่อกรองแล้ว นำผลลัพธ์ที่ได้ (ตัวอย่าง [2][4][7] )
มาเรียงใหม่เป็น [0][1][2][3] และเลือก keyword2 จากผลลัพธ์ reply กลับไปหา user
และบันทึกข้อมูลที่ผ่านการกรองแล้วไว้ที่ data.json
เมื่อ user reply keyword2 กลับมา ก็ใช้หลักการเดิม filter อีกครั้ง (keyword2ต้องไม่มีข้อมูลซ้ำ)
และ put mode ให้กลับไปสู่ Normal mode
สามารถลองใช้ได้ที่ @zzb9597z
key1 : BKK DMK KBV SIN URT