0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Tạo Bot Telegram Nhắc Nhở Công Việc Từ Google Sheets Bằng Google Apps Script

Đăng vào 1 tháng trước

• 3 phút đọc

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 Copy
// 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><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 Copy
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 Copy
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 Copy
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 Copy
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

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào