บทความนี้เขียนขึ้นจากประสบการณ์จริง และเป็นไฟล์ที่ใช้งานจริงปัจจุบันด้วยนะครับ เท้าความสักนิดคือ ท่านรองผู้อำนวยการท่านอยากได้แอปในมือถือเพื่อเช็คความสะอาดของห้องเรียน โดยท่านให้ผมมาคิดระบบและออกแบบระบบไปให้ดูภายใน 1 สัปดาห์
หลังจากที่ได้ข้อมูล จำนวนห้องเรียน จำนวนตึกอาคาร และแบบฟอร์มรายงานความสะอาดแล้ว ผมก็ดำเนินการออกแบบดังนี้
สำหรับบทความนี้ จะมาแนะนำวิธีการทำแบบเพื่อรับค่า และสั่งแจ้งเตือนไปยังกลุ่มไลน์ด้วย Line notify ก่อนนะครับผม
ส่วนตัว Line OA ที่สร้าง Rich Menu และ Flex message มีความซับซ้อนอยู่พอควร จะไม่ได้กล่าวในบทความนี้ครับ
วิเคราะห์แบบฟอร์มต่อไปนี้ เพื่อนำไปลงใน google form
ตัวอย่างไฟล์ที่ให้ไปคือ ไฟล์ตรวจอาคาร 4 มีทั้งหมด 15 ห้อง 3 ชั้น ให้คิดแบบว่าผู้ตรวจเดินตรวจจากชั้นล่างสุด คือ ห้อง 411 ไปเรื่อยๆ จึงถึง ห้อง 436 ห้องสุดท้ายครับ
ลิงค์ดาวน์โหลดไฟล์ word หัวข้อคะแนนที่จะตรวจ >>
ลิงค์ดาวน์โหลดไฟล์ google form >> Download
เมื่อดาวน์โหลดไฟล์ google form ไปแล้วจะเห็นแบบนี้ครับ ให้ทำการแก้ไขเป็นข้อมูลของท่านให้เรียบร้อย เช่น ห้องอะไรบ้าง ส่วนหัวข้อที่จะตรวจก็สามารถเปลี่ยนแปลงแก้ไขได้ตามความเหมาะสมครับ
สร้าง google sheet เปล่าๆ ขึ้นมา 1 sheet ควรอยู่ในโฟลเดอร์เดียวกันกับ goole form
ให้ทดลองกรอกข้อมูลใน google form ให้ครบ สัก 1 ตัวอย่างก่อน เพื่อเชื่อมข้อมูลไปยัง google sheet แล้วเราจะมีเขียน คำสั่งใน sheet กันอีกทีครับ
คลิกเลือก สเปรดชีตที่มีอยู่ เพื่อเชื่อมไปยัง Sheet ที่เราพึ่งสร้างเอาไว้แล้ว
เราจะได้ไฟล์ออกแบบประมาณนี้ครับ
สังเกตด้านล่าง แท็บจะเห็น 2 ไฟล์แบบนี้ครับ
ไปที่ ส่วนขยาย > Apps Script
ลบโค้ดออกทั้งหมด แล้ววางโค้ดด้านล่างนี้ลงไปแทน สังเกตว่ามีห้องเรียน ตาม google form ต้องตรงกันด้วยนะครับ ถ้าใครแก้ฟอร์มแล้ว ต้องมาแก้โค้ดต่างๆให้ตรงกันด้วยครับ
var d = new Date();
var curdate=d.getDate();
var monthcur=d.getMonth();
var yearcur =d.getFullYear()+543;
var time = Utilities.formatDate(d, "Asia/Bangkok", "HH:mm:ss");
var monthCut = ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."]
var monthThai = monthCut[monthcur];
var daytime = curdate+' '+monthThai+' '+yearcur;
//NotifyApp : library
// 1vXbZfRP-7AqwqV7k0fGAnVjCe34pYyI2WdZBJw1Y8U0_DuEbo5fN32P9
function myFunction(e) {
var info = e.namedValues
var data0 = info['ผู้ตรวจ']
var data1 = info['ข้อเสนอแนะเพิ่มเติม']
var data411 = info['บริเวณภายนอก และโดยรอบอาคาร [หน้าอาคาร]']
var data412 = info['บริเวณภายนอก และโดยรอบอาคาร [หลังอาคาร]']
var data413 = info['บริเวณภายนอก และโดยรอบอาคาร [ข้างอาคาร]']
var data414 = info['บริเวณภายนอก และโดยรอบอาคาร [ห้องน้ำภายในอาคาร]']
var data415 = info['บริเวณภายนอก และโดยรอบอาคาร [บันไดและทางเดิน]']
var data416 = info['บริเวณภายนอก และโดยรอบอาคาร [การเปิดปิดประตู-ไฟฟ้า-น้ำ]']
var data4111=info['ห้อง411_(2/13) [โต๊ะและเก้าอี้]']
var data4112=info['ห้อง411_(2/13) [พื้นห้อง]']
var data4113=info['ห้อง411_(2/13) [มุมขยะ]']
var data4114=info['ห้อง411_(2/13) [หน้าห้อง]']
var data4115=info['ห้อง411_(2/13) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr411=[Number(data4111),Number(data4112),Number(data4113),Number(data4114),Number(data4115)];
var data4121=info['ห้อง412_(2/14) [โต๊ะและเก้าอี้]']
var data4122=info['ห้อง412_(2/14) [พื้นห้อง]']
var data4123=info['ห้อง412_(2/14) [มุมขยะ]']
var data4124=info['ห้อง412_(2/14) [หน้าห้อง]']
var data4125=info['ห้อง412_(2/14) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr412=[Number(data4121),Number(data4122),Number(data4123),Number(data4124),Number(data4125)];
var data4131=info['ห้อง413_(6/8) [โต๊ะและเก้าอี้]']
var data4132=info['ห้อง413_(6/8) [พื้นห้อง]']
var data4133=info['ห้อง413_(6/8) [มุมขยะ]']
var data4134=info['ห้อง413_(6/8) [หน้าห้อง]']
var data4135=info['ห้อง413_(6/8) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr413=[Number(data4131),Number(data4132),Number(data4133),Number(data4134),Number(data4135)];
var data4141=info['ห้อง414_(1/16) [โต๊ะและเก้าอี้]']
var data4142=info['ห้อง414_(1/16) [พื้นห้อง]']
var data4143=info['ห้อง414_(1/16) [มุมขยะ]']
var data4144=info['ห้อง414_(1/16) [หน้าห้อง]']
var data4145=info['ห้อง414_(1/16) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr414=[Number(data4141),Number(data4142),Number(data4143),Number(data4144),Number(data4145)];
var data4151=info['ห้อง415_(2/16) [โต๊ะและเก้าอี้]']
var data4152=info['ห้อง415_(2/16) [พื้นห้อง]']
var data4153=info['ห้อง415_(2/16) [มุมขยะ]']
var data4154=info['ห้อง415_(2/16) [หน้าห้อง]']
var data4155=info['ห้อง415_(2/16) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr415=[Number(data4151),Number(data4152),Number(data4153),Number(data4154),Number(data4155)];
var data4161=info['ห้อง416_(3/16) [โต๊ะและเก้าอี้]']
var data4162=info['ห้อง416_(3/16) [พื้นห้อง]']
var data4163=info['ห้อง416_(3/16) [มุมขยะ]']
var data4164=info['ห้อง416_(3/16) [หน้าห้อง]']
var data4165=info['ห้อง416_(3/16) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr416=[Number(data4161),Number(data4162),Number(data4163),Number(data4164),Number(data4165)];
var data4211=info['ห้อง421_(2/10) [โต๊ะและเก้าอี้]']
var data4212=info['ห้อง421_(2/10) [พื้นห้อง]']
var data4213=info['ห้อง421_(2/10) [มุมขยะ]']
var data4214=info['ห้อง421_(2/10) [หน้าห้อง]']
var data4215=info['ห้อง421_(2/10) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr421=[Number(data4211),Number(data4212),Number(data4213),Number(data4214),Number(data4215)];
var data4221=info['ห้อง422_(2/11) [โต๊ะและเก้าอี้]']
var data4222=info['ห้อง422_(2/11) [พื้นห้อง]']
var data4223=info['ห้อง422_(2/11) [มุมขยะ]']
var data4224=info['ห้อง422_(2/11) [หน้าห้อง]']
var data4225=info['ห้อง422_(2/11) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr422=[Number(data4221),Number(data4222),Number(data4223),Number(data4224),Number(data4225)];
var data4231=info['ห้อง423_(2/12) [โต๊ะและเก้าอี้]']
var data4232=info['ห้อง423_(2/12) [พื้นห้อง]']
var data4233=info['ห้อง423_(2/12) [มุมขยะ]']
var data4234=info['ห้อง423_(2/12) [หน้าห้อง]']
var data4235=info['ห้อง423_(2/12) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr423=[Number(data4231),Number(data4232),Number(data4233),Number(data4234),Number(data4235)];
var data4311=info['ห้อง431_(2/4) [โต๊ะและเก้าอี้]']
var data4312=info['ห้อง431_(2/4) [พื้นห้อง]']
var data4313=info['ห้อง431_(2/4) [มุมขยะ]']
var data4314=info['ห้อง431_(2/4) [หน้าห้อง]']
var data4315=info['ห้อง431_(2/4) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr431=[Number(data4311),Number(data4312),Number(data4313),Number(data4314),Number(data4315)];
var data4321=info['ห้อง432_(2/5) [โต๊ะและเก้าอี้]']
var data4322=info['ห้อง432_(2/5) [พื้นห้อง]']
var data4323=info['ห้อง432_(2/5) [มุมขยะ]']
var data4324=info['ห้อง432_(2/5) [หน้าห้อง]']
var data4325=info['ห้อง432_(2/5) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr432=[Number(data4321),Number(data4322),Number(data4323),Number(data4324),Number(data4325)];
var data4331=info['ห้อง433_(2/6) [โต๊ะและเก้าอี้]']
var data4332=info['ห้อง433_(2/6) [พื้นห้อง]']
var data4333=info['ห้อง433_(2/6) [มุมขยะ]']
var data4334=info['ห้อง433_(2/6) [หน้าห้อง]']
var data4335=info['ห้อง433_(2/6) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr433=[Number(data4331),Number(data4332),Number(data4333),Number(data4334),Number(data4335)];
var data4341=info['ห้อง434_(2/7) [โต๊ะและเก้าอี้]']
var data4342=info['ห้อง434_(2/7) [พื้นห้อง]']
var data4343=info['ห้อง434_(2/7) [มุมขยะ]']
var data4344=info['ห้อง434_(2/7) [หน้าห้อง]']
var data4345=info['ห้อง434_(2/7) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr434=[Number(data4341),Number(data4342),Number(data4343),Number(data4344),Number(data4345)];
var data4351=info['ห้อง435_(2/8) [โต๊ะและเก้าอี้]']
var data4352=info['ห้อง435_(2/8) [พื้นห้อง]']
var data4353=info['ห้อง435_(2/8) [มุมขยะ]']
var data4354=info['ห้อง435_(2/8) [หน้าห้อง]']
var data4355=info['ห้อง435_(2/8) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr435=[Number(data4351),Number(data4352),Number(data4353),Number(data4354),Number(data4355)];
var data4361=info['ห้อง436_(2/9) [โต๊ะและเก้าอี้]']
var data4362=info['ห้อง436_(2/9) [พื้นห้อง]']
var data4363=info['ห้อง436_(2/9) [มุมขยะ]']
var data4364=info['ห้อง436_(2/9) [หน้าห้อง]']
var data4365=info['ห้อง436_(2/9) [ประตูหน้าต่างไฟฟ้าพัดลม]']
const arr436=[Number(data4361),Number(data4362),Number(data4363),Number(data4364),Number(data4365)];
const arr41=[Number(data411),Number(data412),Number(data413),Number(data414),Number(data415),Number(data416)];
//var token = 'xxx'
//var token2 = 'xxx'
//var token3 = 'xxx'
var message = '📣📣 แจ้งผลการตรวจอาคาร 4 วันที่ '+ daytime
+ '👉\n ผู้ตรวจ : '
+ data0
+ '\n รายการตรวจอาคาร :'
+ '\n ✅ด้านหน้า, ✅ด้านหลัง, ✅ด้านข้าง, ✅ห้องน้ำ, ✅บันได-ทางเดิน ,✅ การเปิด/ปิดประตู-ไฟฟ้า-น้ำ \n👉 อาคาร 4 ได้คะแนน '
+ arr41
+ '\n รายการตรวจห้องเรียน :'
+ '\n ✅โต๊ะเก้าอี้, ✅พื้นห้อง, ✅มุมขยะ, ✅หน้าห้อง, ✅ประตูหน้าต่างไฟฟ้าพัดลม \n👉411(2/13)คะแนน '
+ arr411 +'\n👉 412(2/14)คะแนน '
+ arr412 +'\n👉 413(6/8)คะแนน '
+ arr413 +'\n👉 414(1/16)คะแนน '
+ arr414 +'\n👉 415(2/16)คะแนน '
+ arr415 +'\n👉 416(3/16)คะแนน '
+ arr416 +'\n👉 421(2/10)คะแนน '
+ arr421 +'\n👉 422(2/11)คะแนน '
+ arr422 +'\n👉 423(2/12)คะแนน '
+ arr423 +'\n👉 431(2/4)คะแนน '
+ arr431 +'\n👉 432(2/5)คะแนน '
+ arr432 +'\n👉 433(2/6)คะแนน '
+ arr433 +'\n👉 434(2/7)คะแนน '
+ arr434 +'\n👉 435(2/8)คะแนน '
+ arr435 +'\n👉 436(2/9)คะแนน '
+ arr436 +'\n💢💢 ข้อเสนอแนะจากผู้ตรวจ: '
+ data1
NotifyApp.sendNotify(token,message)
//NotifyApp.sendNotify(token2,message)
//NotifyApp.sendNotify(token3,message)
}
ใส่ Token ไลน์ที่ต้องการแจ้งเตือนลงไป วิธีการออก Token ไลน์ให้ดูจากคลิปต่อไปนี้ หรือค้น Google ก็ได้ครับผมจะข้ามขั้นตอนนี้ไป
ตอนใส่ Token ให้เปิดเครื่องหมาย // ออกด้วยนะครับเพื่อให้โค้ดทำงาน ในไฟล์แจ้งเตือนอาจแจ้งไปหลายกลุ่มไลน์โดยการแก้ไข Token2 และ Token3 ครับ
ต่อไป ทำการเพิ่ม Library Line Notify โดยการ copy โค้ดด้านล่างนี้ไป แล้วกดที่ เครื่องหมาย + ของ ไลบรารี
กดค้นหา
เลือก version ล่าสุด แล้วเพิ่มเข้าไปครับ
ต่อไปทำการ deploy เป็นเว็บแอบครับ โดยไปที่ การทำให้ใช้งานได้ > การทำให้ใช้งานได้รายการใหม่ > เลือก เว็บแอป
เลือกผู้มีสิทธิ์เข้าถึง เป็นทุกคน จากนั้นก็กด การทำให้ใช้งานได้
กดให้สิทธิ์เข้าถึง
เลือก อีเมลของเรา แล้วกด Allow ไปครับ จากนั้นก็กด เสร็จสิ้น
กลับไปที่ app script แล้วเลือกรูปนาฬิกาเพื่อสร้าง trigger เวลาเรากดส่งฟอร์มแล้ว ให้มันแจ้งเตือนไปยังกลุ่มไลน์ครับ
กดเพิ่มทริกเกอร์
เลือกเหมือนในภาพ แล้วเลือก เมื่อส่งฟอร์ม แล้วกดบันทึก จากนั้นอาจจะต้องกด allow เพื่ออนุญาตสิทธิ์ครับ
จากนั้นทดลองส่งฟอร์มดูครับ ว่าจะมีไลน์แจ้งไปยังกลุ่มของเราไหม
บริการรับทำระบบ ตรวจอาคารหรือห้องเรียน ตามสั่ง เพียงส่งข้อมูล เช่น
1. จำนวนห้อง ชื่อห้อง อาคารหรือรายละเอียดต่างๆ
2. กลุ่มไลน์ หรือ Token ไลน์ที่ต้องการแจ้งเตือน
แอดไลน์มาสอบถามรายละเอียดได้ครับ ราคาเริ่มต้นที่ 1500 บาท
Discover more from KruJakkrapong 's Blog
Subscribe to get the latest posts sent to your email.