เมื่อไหร่จะสิ้นเดือน!! แจ้งเตือนนับถอยหลังวันสิ้นเดือนง่าย ๆ ด้วย Cloud scheduler และ Line notify

Thanainan Khamthan
Sep 19 · 3 min read
Photo by Lukas Blazek on Unsplash

คนเราเมื่อเจอปัญหาก็ต้องหาวิธีที่ดีที่สุดในการแก้ ทุกอย่างเริ่มจากปัญหาหรือไม่ก็โจทย์คำถามต่าง ๆ ผมเองก็เหมือนกัน ซึ่งผมเองมักคิดว่าเหลืออีกกี่วันจะสิ้นเดือน แล้วก็เปิดปฏิทินดูว่าเหลือกี่วันจะสิ้นเดือน หลังจากที่ทำแบบนี้ซ้ำไปซ้ำมา จึงคิดได้ว่าทำไมไม่ทำการแจ้งเตือนเองเลย เสียเวลาไปดูปฏิทินทำไมกัน จึงเกิดเป็นโปรเจคเล็ก ๆ เมื่อไหร่จะสิ้นเดือนครับ


สิ่งที่ควรรู้

  • พื้นฐานภาษา JavaScript

สิ่งที่ต้องมีในเครื่อง

  • Node.js ใน Node.js จะมี npm ใช้สำหรับลง Package ของ javascript
  • Code editor เช่น Visual Studio Code

Step 1: Setup firebase project

เปิด terminall บน mac หรือ command line บน window และพิมพ์คำสั่งด้านล่างเพื่อลง firebase-tools

npm i -g firebase-tools

สร้างโฟร์เดอร์ชื่อ noti-end-of-month และเข้าไปที่ directory นั้น

mkdir noti-end-of-month && cd noti-end-of-month

ทำการ login firebase สำหรับใครที่ยังไม่ได้สมัครก็สมัครได้ที่ลิ้งนี้ได้ครับ https://console.firebase.google.com

firebase login

ทำการสร้างโปรเจค firebase

firebase init

จะได้หน้าด้านล่างนี้ กด ลูกศร ⬇️ (ลง) 2 ครั้ง และกดปุ่ม Space bar เพื่อเลือกเป็น functions จากนั้นกดปุ่ม Enter

กด ลูกศร ⬇️ (ลง) 2 ครั้ง จากนั้นกดปุ่ม Enter เพื่อสร้างโปรเจคใหม่

ทำการตั้งชื่อโปรเจคไอดี โดยมีเงื่อนไขที่ว่าต้องเป็นชื่อที่ไม่ซ้ำและไม่สามารถแก้ไขที่หลังได้

เลือกภาษาที่จะเขียน Cloud Functions ในที่นี้ผมเลือกเป็น Javascript

ในหน้านี้ ถามว่าต้องการที่จะใช้ ESLint ในการตรวจจับ bug และ จัดรูปแบบโค้ดหรือไม่ ?ในที่นี้ผมเลือก Y เพราะอย่างน้อยโค้ดจะได้มีระเบียบเรียบร้อย อ่านง่าย

เจอหน้านี้กด Y และ Enter ไปเลย เพื่อลง install package

จากนั้น เข้าไปที่ https://console.firebase.google.com และกดไปที่โปรเจคที่สร้างไว้ จากนั้นกดปุ่ม อัพเกรด เพื่อเลือกเป็นแผน Blaze จ่ายตามการใช้งานจริง เพราะ Cloud scheduler ต้องเลือกเป็นแผน Blaze เท่านั้น (สำหรับแผน Blaze ต้องมีการผูกบัตรด้วย แต่ถ้าใช้ตามโควต้าฟรีก็ไม่เสีย)

ยังไม่หมดครับสำหรับ Cloud function จำเป็นต้องเลือกตำแหน่งทรัพยากร Google Cloud Phatform (GCP) จะเลือกใกล้บ้านเราก็ได้ครับ เพราะเป็นที่เก็บข้อมูล Cloud ของเรา


Step 2: coding

เข้ามาที่โฟลเดอร์ที่สร้างไว้ หน้าตาจะได้ประมาณนี้

เข้าไปที่โฟลเดอร์ functions และ install package moment

cd functions
npm i moment

คักลอกโค้ดด้านล่างไปวางไว้ที่ไฟล์ index.js หลักการทำงานก็คือ หาวันสุดท้ายของเดือนและวันปัจจุบันของเดือน แค่นี้ก็ได้วันที่เหลือจากการที่มาลบกันนั่นเอง ทำง่าย ๆ เพียงใช้ไลบรารี่ moment

ทำการรันไฟล์ index.js เพื่อทดสอบ

node index.js

จะได้ อีก 16 วัน จะสิ้นเดือน สู้สู้จ้า 🎉🎉 เป็นอันว่าโค้ดใช้งานได้


Step3: Line notify

เข้าไปที่ Line notify จากลิ้งด้านล้างนี้

ทำการออก Token โดยกรอกชื่อแจ้งเตือน -> เลือกห้องแชท (ในที่นี้ผมเลือกแจ้งเตือนแบบตัวต่อตัวจาก Line Notify) -> กดปุ่ม ออก Token จะได้เลข Token ทำการคัดลอกไว้ใช้ในขั้นต่อไป

ทำการ install package request

npm i request

นำ Token ที่ได้ไปใส่แทนที่ <accress_token> จากนั้นคัดลอกไปวางที่ไฟล์ index.js

จากโค้ด ทำการยิง API ไปที่ https://notify-api.line.me/api/notify โดยส่ง accress token ในการยืนยันตัวตน และ message ในการแจ้งเตือน

ทำการรันไฟล์ index.js เพื่อทดสอบ

node index.js

เรียบร้อยครับ จะเห็นการแจ้งเตือนจาก line เด้งขึ้นมาแบบนี้ !!


Step4: Cloud schedule

สำหรับ cloud schedule หน้าที่ก็คือ ใช้รัน function ที่ต้องการตามเวลาที่กำหนด อย่างเช่น ทุกนาที ทุกชั่วโมง ทุกวัน ทุกเดือน เป็นต้น สำหรับเพิ่มเติมดูได้ที่บทความของพี่ตี๋ GDE Firebase ได้เลยครับ พี่เขาเขียนไว้ดีมาก

คักลอกโค้ดด้านล่างไปวางไว้ที่ไฟล์ index.js

สร้าง function CountEndOfMonth โดยตั้งเวลาไว้ที่ทุก ๆ นาที (* * * * *)

ทำการ deploy function ขึ้นไปที่ firebase

firebase deploy

จะได้การแจ้งเตือนจาก line notify ทุก ๆ นาที

แต่ผมต้องการโดยที่แจ้งเตือนทุก 7 นาฬิกาของทุกวัน จะได้โค้ดตามนี้ครับ


สรุป

ก็จบไปแล้วครับสำหรับการแจ้งเตือนเมื่อไหร่จะถึงสิ้นเดือน โดยใช้ Firebase Cloud Schedule ในการตั้งเวลาทุกๆวัน และใช้ Line notify ในการแจ้งเตือน ซึ่งการเขียนโปรแกรมไม่ยากเลย โค้ดมีเพียงแค่ 30 บรรทัด สามารถทำตามได้ไม่ยากและสามารถประยุกต์ใช้ได้กับชีวิตประจำวันได้ อย่างเช่น แจ้งเตือนวันหยุด เป็นต้น

I GEAR GEEK

เราคือกลุ่มคนที่มีความหลงไหลในการเขียนโปรแกรม และ มีประสบการณ์จากการทำงานจากทั้งในและนอกประเทศอย่างโชกโชน แต่ถ้าพวกเราเขียนโปรแกรมเพื่อจบงานไปอย่างเดียวมันก็ไม่สนุก พวกเราเลยรวมตัวกันขึ้นมาเปิดเป็นบริษัท Startup ที่มีชื่อว่า I GEAR GEEK ในจังหวัดเชียงใหม่นี้

Thanainan Khamthan

Written by

I GEAR GEEK

เราคือกลุ่มคนที่มีความหลงไหลในการเขียนโปรแกรม และ มีประสบการณ์จากการทำงานจากทั้งในและนอกประเทศอย่างโชกโชน แต่ถ้าพวกเราเขียนโปรแกรมเพื่อจบงานไปอย่างเดียวมันก็ไม่สนุก พวกเราเลยรวมตัวกันขึ้นมาเปิดเป็นบริษัท Startup ที่มีชื่อว่า I GEAR GEEK ในจังหวัดเชียงใหม่นี้

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade