Linebot(Google Apps Script) บันทึกเวลาทำงาน เข้า-ออก

ITTIRIT T.
2 min readJun 20, 2020

--

Script : https://script.google.com/d/1t_LMy62Y-5p7_aK0DuUV1WbDIyW2UBE_ILiPBCgqM9YaJZJtdwdzdqAL/edit?usp=sharing

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 << ทำตามคลิปหรือทำตามรูปด้านล่างก็ได้ครับ

เลือก master branch จะได้ link ดังภาพ
  • นำ 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

--

--