Giới Thiệu Về Google Apps Script
Google Apps Script là một nền tảng lập trình cho phép người dùng Google tạo ra các ứng dụng và tự động hóa quy trình trong hệ sinh thái Google. Bài viết này sẽ hướng dẫn bạn cách tạo một Bot Telegram để thông báo nhắc nhở công việc từ Google Sheets.
Chuẩn Bị
Trước tiên, bạn cần tạo một bảng kế hoạch trong Google Sheets với các deadline cho từng công việc. Bảng dữ liệu của bạn nên có định dạng như sau:
Tên Công Việc | Deadline |
---|---|
Công Việc 1 | 17/02/2025 |
Công Việc 2 | 18/02/2025 |
Bạn sẽ dùng Google Apps Script để gửi thông báo qua Telegram với thông tin về công việc còn lại 3 ngày đến thời hạn.
Tạo Bot Telegram
Để gửi thông báo qua Telegram, trước tiên bạn cần tạo một Bot mới thông qua BotFather. Sau khi tạo, bạn cần lấy token của Bot và tạo một group mới trên Telegram, sau đó thêm Bot của bạn vào group đó. Để biết thêm chi tiết về việc tạo Bot, hãy tham khảo tài liệu chính thức của Telegram.
Bắt Đầu Lập Trình
Dưới đây là đoạn mã giúp bạn định nghĩa một hàm để gửi thông báo đến Telegram:
javascript
// Gửi thông báo đến Telegram
function sendToTelegram(message) {
var botToken = '<botToken>';
var chatId = '<chatId>';
try {
var url = `https://api.telegram.org/bot${botToken}/sendMessage?chat_id=${chatId}&text=${encodeURIComponent(message)}`;
UrlFetchApp.fetch(url);
Logger.log('Gửi thông báo thành công!');
} catch(error) {
Logger.log('Lỗi: ' + error.message);
}
}
Hãy đảm bảo bạn đã thay thế <botToken>
và <chatId>
bằng thông tin tương ứng của bạn.
Đọc Dữ Liệu Từ Google Sheets
Tiếp theo, bạn sẽ đọc dữ liệu từ bảng điều khiển Google Sheets:
javascript
function main() {
Logger.log('Bắt đầu...');
var sheetWeb = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var data = sheetWeb.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var taskName = data[i][0];
var deadline = data[i][1];
Logger.log('Công việc: ' + taskName);
Logger.log('Deadline: ' + deadline);
}
}
So Sánh Ngày Hạn
Sau khi đọc được dữ liệu, bạn sẽ so sánh ngày hạn:
javascript
if (compareDay > deadline && taskName != null && deadline != null) {
var message = `[Deadline] 🔔 Công việc ${taskName} đến hạn ${deadline}`;
sendToTelegram(message);
}
Định Dạng Ngày Tháng
Để ngày tháng hiển thị đúng định dạng, bạn có thể sử dụng hàm sau:
javascript
function formatDate(date) {
if (date instanceof Date) {
return Utilities.formatDate(date, Session.getScriptTimeZone(), 'dd/MM/yyyy');
}
return null;
}
Code Hoàn Chỉnh
Dưới đây là code hoàn chỉnh bạn có thể sử dụng:
javascript
function main() {
Logger.log('Bắt đầu...');
var toDay = new Date();
var sheetWeb = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var data = sheetWeb.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var taskName = data[i][0];
var deadline = data[i][1];
Logger.log('Công việc: ' + taskName);
Logger.log('Deadline: ' + deadline);
var compareDay = new Date(toDay);
compareDay.setDate(toDay.getDate() + 3);
if (compareDay > deadline && taskName != null && deadline != null) {
var deadlineDateFormat = formatDate(deadline);
if (deadlineDateFormat == null) {
continue;
}
var message = `[Deadline] 🔔 Công việc ${taskName} đến hạn ${deadlineDateFormat}`;
sendToTelegram(message);
}
}
}
function formatDate(date) {
if (date instanceof Date) {
return Utilities.formatDate(date, Session.getScriptTimeZone(), 'dd/MM/yyyy');
}
return null;
}
function sendToTelegram(message) {
var botToken = '<botToken>';
var chatId = '<chatId>';
try {
var url = `https://api.telegram.org/bot${botToken}/sendMessage?chat_id=${chatId}&text=${encodeURIComponent(message)}`;
UrlFetchApp.fetch(url);
Logger.log('Gửi thông báo thành công!');
} catch(error) {
Logger.log('Lỗi: ' + error.message);
}
}
Lập Lịch Tự Động
Cuối cùng, bạn có thể thiết lập lịch cho hàm main
chạy mỗi ngày để tự động gửi thông báo. Hãy tìm kiếm bài viết về cách thiết lập lịch trong Google Apps Script để biết thêm chi tiết.
Bài viết này giúp bạn tạo ra một ứng dụng nhắc nhở công việc đơn giản nhưng hiệu quả từ Google Sheets đến Telegram, giúp bạn không bỏ lỡ deadline quan trọng.
Bài viết gốc được đăng tải tại: https://google-script-hub.github.io/send-notification-to-telegram
source: viblo