Linebot(Google Apps Script) บันทึกเวลาทำงาน เข้า-ออก
2 min readJun 20, 2020
Sheet : https://docs.google.com/spreadsheets/d/1Jh4kjGq_Ifou_JVSH_MArV7PFdWPy_BQrHXD8QReaqw/edit?usp=sharing
html : https://github.com/itchampclub/liffcheckin
การทำงานคร่าวๆ
- กำหนดช่วงเวลา เปิด/ปิด ให้เช็คอิน-เอ้าท ์ได้
- กดหนดระยะห่างเช็คอินจาก location ที่กำหนดได้
- บันทึกเวลา In/Out, lat/long, userId, displayName, Date/Time, OS และ Distance.
- เขียนโค๊ดเพิ่มเติมเป็นบอทถาม-ตอบปกติได้
สร้าง Liff Endpoint ด้วย GithubPage ด้วยวิธีง่ายๆ
https://youtu.be/fyMq8YTD2Y4 << ทำตามคลิปหรือทำตามรูปด้านล่างก็ได้ครับ
- นำ link ที่ได้ไปใช้เป็น liff endpoint
สิ่งที่ต้องแก้ไขในไฟล์ html
- if(hh <= 13 && mm <= 0){ // ช่วงเวลาเช็คอิน
document.getElementById(“cin”).classList.remove(‘invisible’);
}else if(hh >= 17 && mm >= 0){ // ช่วงเวลาเช็คเอ้าท์
document.getElementById(“cout”).classList.remove(‘invisible’);
}else{
alert(“ไม่สามารถเช็คอิน/เอาท์ได้ในช่วงเวลา 13.00–17.00”);
liff.closeWindow();
} - const xurl = “https://script.google.com/macros/s/AKfycbz-krIX4x26C_hIFECOy5i0EvLPIMIeKiSPD4kswFJXznuGFE4/exec"; //แก้เป็น url web app (ที่ได้จาก google apps script)
อธิบาย script คร่าวๆ
- function replyMsg(replyToken, mess, channelToken) ใช้ reply message กลับไปยังผู้ใช้งาน (เขียนโค๊ดเพิ่มเติมตามต้องการ)
- function distance(lat1, lon1, lat2, lon2, unit) ใช้หาค่าระยะห่างระหว่าง lat/long ที่กำหนด กับ lat/long ของ user ใช้หน่วยกิโลเมตร
- function doGet(e) รับ-ส่งค่า get request จาก liff endpoint
สิ่งที่ต้องแก้ไขใน script
- var channelToken
- var latx = “9.0202447”;
var longx = “99.1767025”; - กำหนด lat/long จุดเช็ค
- if(xdist > 2){ //ปรับระยะห่าง
เมื่อทำทุกอย่างครบแล้ว สร้าง rich menu > link > liff url
ตัวอย่างการใช้งาน
ลองเล่นได้ที่ https://lin.ee/vQuP5Gc