23 ธ.ค. 2020 เวลา 04:34 • วิทยาศาสตร์ & เทคโนโลยี
วิธีทำการแจ้งเตือนใน Google Sheet ไปยัง Line ด้วย Google Apps Script
1
บทความนี้จะเป็นการยกตัวอย่างการแจ้งเตือนอะไรก็ตามที่มีวันหมดอายุ เช่น บัตรประชาชน ใบขับขี่ เราอยากให้แจ้งเตือนล่วงหน้า 30 วัน เพื่อเตรียมตัวในการต่ออายุครั้งต่อไป โดยให้แจ้งไปยัง Line ของเราเอง มาดูวิธีทำกันเลยครับ
1
1. เตรียมข้อมูล Data
ตั้งชื่อช่วง เพื่อให้ง่ายในการเขียน Code
2. ทำ View เพื่อจัดเรียงข้อมูล โดยเรียงจากวันที่ใกล้จะหมดอายุมากที่สุดอยู่บน หากถึงกำหนดเวลาแจ้งเตือนให้แสดงว่า Yes หากยังไม่ถึงเวลาแจ้งเตือนให้แสดง No
พิมพ์ฟังชั่นก์ ARRAYFORMULA ดังนี้
=ARRAYFORMULA({
QUERY(data,"Select A,B,C where A <> '' order by B",1),
if((QUERY(data,"Select B where A <> '' order by B",1)-now())<=QUERY(data,"Select C where A <> '' order by B",1),"Yes","No")})
2
3. สร้าง Token ใน Line Notify ไปที่เว็บไซต์เลยครับ https://notify-bot.line.me/th/ จากนั้นเข้าสู่ระบบ เมื่อเข้าได้เแล้ว ให้เข้าไปยัง หน้าของฉัน
เลื่อนไปล่างสุด จะมีออก Access Token ให้เลือก ออก Token
ใส่ชื่อ และเลือกแจ้งเตือนตัวต่อตัว และเก็บ Token ให้ดีๆ นะครับ
4. เขียน code ตามนี้
function sentline() {
var SheetID = "[sheet id]";
var dataSheetID = SpreadsheetApp.openById(SheetID);
var sheet = dataSheetID.getSheetByName("View");
var startRow = 2;
var numRows = sheet.getDataRange().getLastRow();
var lastCols = sheet.getDataRange().getLastColumn();
var dataRange = sheet.getRange(startRow,1, numRows - 1, lastCols);
var data = dataRange.getValues();
var Token = '[token id]';
 
for (var i = 0; i < data.length; ++i){
var row = data[i];
var message = "ถึง : ใครสักคน" + "\n";
message = message + "รายการ : " + row[0] + "\n";
message = message + "ใกล้หมดอายุวันที่ : " + thaiDate(row[1]);
 
if (row[3] == "Yes"){
sendMS(Token,message);
}
 
}
}
function sendMS(Token,message)
{
var formData = {
'message': message,
};
 
var options = {
'method' : 'post',
'headers' : {'Authorization': "Bearer "+Token},
'contentType': 'application/x-www-form-urlencoded',
'payload' : formData
};
UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options);
}
2
function thaiDate(cDate) {
var month = Utilities.formatDate(cDate, "GMT+7", "MM");
var day = Utilities.formatDate(cDate, "GMT+7", "d");
var year = Number(Utilities.formatDate(cDate, "GMT+7", "yyyy"))+543;
var thaiMonth;
switch (month){
case "01" :
thaiMonth = "มกราคม";
break;
case "02" :
thaiMonth = "กุมภาพันธ์";
break;
case "03" :
thaiMonth = "มีนาคม";
break;
case "04" :
thaiMonth = "เมษายน";
break;
case "05" :
thaiMonth = "พฤษภาคม";
break;
case "06" :
thaiMonth = "มิถุนายน";
break;
case "07" :
thaiMonth = "กรกฎาคม";
break;
case "08" :
thaiMonth = "สิงหาคม";
break;
case "09" :
thaiMonth = "กันยายน";
break;
case "10" :
thaiMonth = "ตุลาคม";
break;
case "11" :
thaiMonth = "พฤศจิกายน";
break;
case "12" :
thaiMonth = "ธันวาคม";
break;
}
var tDate = day + " " + thaiMonth + " " + year;
return tDate;
}
5. เอา sheet id และ token id จริงๆ ใส่เข้าไปใน code ทดสอบรันโปรแกรม ถ้ามีข้อความขึ้นในไลน์ก็ถือว่า ผ่าน
6. เปิดทริกเกอร์ ให้รันโปรแกรมทุกๆ วัน เพื่อแจ้งเตือนทุกวัน เป็นอันเสร็จสิ้น
โฆษณา