ถ้าใครอยากได้ระบบอะไรสักอย่างมาช่วยเตือนว่าตอนนี้เรามีเอกสารอะไรบ้างที่ต้องต่ออายุแล้ว หรือแม้กระทั้งงานต่างๆที่ต้องจัดการได้แล้ว แล้วไม่รู้จะใช้ระบบใหนดีให้เราเห็นภาพรวมแบบง่ายๆ วันนี้ผมมีระบบมานำเสนอครับ

โดยระบบเป็นระบบ แจ้งเตือนต่ออายุแบบง่ายๆ ซึ่งสามารถ download จากลิงค์ด้านล่างนี้ได้เลย
🔗 Template ระบบแจ้งเตือนต่ออายุเอกสารผ่าน Line
ซึ่งทุกคนก็สามารถทำการ copy template แล้วทำการกรอก event การแจ้งเตือนของบริษัทเราลงไปในหน้า “รายการรวมได้ทันที”
และหลังจากนั้นเราก็สามารถทำการเพิ่ม script การแจ้งเตือนเพื่อให้ระบบทำการส่งแจ้งเตือน event ที่เกินกำหนดแล้วมายัง line ของเราได้โดยสามารถเข้าที่หน้า “ส่วนขาย -> App Script” ได้ทันที

หลังจากนั้นระบบจะพาเรามาที่หน้าเขียน Script ใน Google App Script ก็สามารถทำการ copy code ด้านล่างนี้มาวางได้เลย
// แก้ไขข้อมูลที่นี้ก่อนใช้งาน //
const sheetid = "sheetid"; //ใส่ ID ของ Google Sheets ของเราจาก URL ของ Google Sheets
var accessToken = 'Channel Accesstoken'; //ใส่ Channel Accesstoken จาก https://developers.line.biz
var recId = 'userid or groupid'; //กรณีต้องการส่งข้อความไปยัง user หา ID user จาก https://webhook.site/
var ssAlert = "รวมรายการแจ้งเตือน";
function sendAlert() {
const sheet = SpreadsheetApp.openById(sheetid).getSheetByName(ssAlert);
const lr = sheet.getLastRow();
if (lr < 2) {
Logger.log("No data to send.");
return;
}
const range = sheet.getRange('A2:E' + lr);
const values = range.getValues();
Logger.log(values);
Logger.log(flattenArrayToString(values,0));
sendLineMessage(accessToken, recId, "แจ้งเตือนสิ่งที่ต้องทำ "+Utilities.formatDate(new Date(), "GMT+7", "dd/MM/yyyy")+'\n\n'+flattenArrayToString(values,0));
}
function flattenArrayToString(arr) {
// Helper function to format dates in DD/MM/YYYY
function formatDate(cell) {
if (Object.prototype.toString.call(cell) === '[object Date]' && !isNaN(cell)) {
return Utilities.formatDate(cell, "GMT+7", "dd/MM/yyyy");
}
return cell;
}
return arr
.map(row =>
row.map(cell => formatDate(cell)) // Format each cell
.join(' : ') // Join each cell in the row with :
)
.join('\n'); // Separate each row with newline
}
function sendLineMessage(token, recipientId, text) {
var payload = JSON.stringify({
to: recipientId,
messages: [{type: 'text', text: text}]
});
var options = {
'method': 'post',
'contentType': 'application/json',
'headers': {
'Authorization': 'Bearer ' + token
},
'payload': payload
};
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', options);
}
โดยสิ่งที่จำเป็นต้องเปลี่ยนแปลงหลักๆคือ
- sheetid ที่ให้เราไปนำเอา url ของ google sheets ที่ต้องการส่งแจ้งเตือน (คัดลอกตั้งแต่หลัง d/ จนถึงก่อน /edit มาวาง)
- accessToken ให้เราใส่ Channel Accesstoken จากหน้า Line Developer
- redId เป็น id ของกลุ่มหรือ user line ที่จะให้ script ส่งข้อความแจ้งเตือนไป โดยเราสามารถนำ link webhook จาก webhook.site ไปผูกใน lineOA แล้วให้ใช้ user ที่เราต้องการจะส่งข้อมูลทักเข้าไปเพื่อแสดง userID ของ user นั้นๆได้เลย
- กรณีที่ชื่อชีทที่ต้องการส่งข้อมูลแจ้งเตือนไม่ได้เป็น “รวมรายการแจ้งเตือน” ให้เราการแก้ไขที่ตัวแปร ssAlert
- กรณีที่ช่วงของข้อมูลที่ส่งไม่ได้อยู่ที่ column A:E ก็ให้เราแก้ไขที่ตัวแปร range ใน function sendAlert
(กรณีใช้ template ด้านบนก็ให้เราปรับแก้แค่ข้อ 1-3 ได้เลย)
หลังจากปรับแก้เสร็จก็ให้เราทำการสร้าง trigger เพื่อให้ระบบทำการเช็คข้อมูลในทุกๆวันเพื่อส่งข้อมูลมายังไลน์ของเราได้เลย

โดยเราสามารถตั้งค่า trigger ดังต่อไปนี้ได้เพื่อให้ระบบส่งข้อมูลแจ้งเตือนมาทุกๆ วันตอน 8.00-9.00 ได้เลย (หรือถ้าอยากจะเปลี่ยนเวลาก็สามารถปรับได้เองเลยครับ)

ถ้าใครงงขั้นตอนใหนก็สามารถกดดูรายละเอียดเพิ่มเติมได้ที่คลิปด้านล่างเลยครับ
💳 ชอบคลิปที่ช่วยเพิ่มประสิทธิภาพการทำงานแบบนี้สามารถสมัครสมาชิกช่องได้ที่
https://www.youtube.com/channel/UChxmhkD8uSSzUOkfMO_p5oQ/join
🎥 อุปกรณ์ที่ผมใช้
กล้อง Sony ZV-E10 kit 16-50mm
Mouse Logitech MX Master 3s
MacBook Air M2
ไมค์ wireless Saramonic Blink 500
เก้าอี้ Anda Seat X-Air Pro Ergonomic Gaming Chair
แขนจับจอ Anda Seat Stealth A6L Ergonomic Monitor Arm
ไมโครโฟน AKG Lyra
ไฟส่องหน้าจอ Xiaomi Light Bar