Google Apps Script实现Telegram Bot:J列值为Hoàn Thành时推送消息
修改后的Google Apps Script脚本
// 编辑触发器:仅当Task工作表J列(第10列)值变为「Hoàn Thành」时触发推送 function onEdit(e) { const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Task"); const editedRange = e.range; const row = editedRange.getRow(); const col = editedRange.getColumn(); // 限定触发范围:仅在A2:K范围内的第10列(J列),且行号大于等于2(跳过表头) const dataRange = targetSheet.getRange("A2:K"); const isInDataRange = row >= dataRange.getRow() && row <= dataRange.getLastRow() && col >= dataRange.getColumn() && col <= dataRange.getLastColumn(); // 核心判断:编辑的是J列,且单元格值为「Hoàn Thành」 if (isInDataRange && col === 10) { const cellValue = editedRange.getValue().trim(); // 去除首尾空格避免误判 if (cellValue === "Hoàn Thành") { // 获取当前行的完整数据(A到K列) const dataInfo = targetSheet.getRange(row, 1, 1, 11).getValues(); // 确保第一列(A列)不为空时才推送 if (dataInfo[0][0] !== "") { sendTelegramNotification(dataInfo); } } } } // 发送Telegram通知函数(保留原逻辑,优化可读性与请求规范) function sendTelegramNotification(data) { let message = ""; message += "📝 <strong> ĐỀ NGHỊ PHÊ DUYỆT CÔNG VIỆC</strong> \n"; message += "------------------------------------------------------------- \n \n"; message += "<code> 📅 " + Utilities.formatDate(new Date(), "GMT+7", "dd/MM/yyyy hh:mm:ss") + "</code> \n \n "; message += "<em> 🔸 Huyền Phương đã làm xong công việc</em>: <code>" + data[0][1] + "</code> \n"; message += "✅ anh Trung vào kiểm tra ngay nhé ✅ \n\n"; message += "------------------------------------------------------------ "; const apiUrl = `https://api.telegram.org/bot${botSecret}/sendMessage`; const payload = { text: message, chat_id: chatId, parse_mode: "HTML" }; // 使用POST请求避免GET请求的长度限制问题 UrlFetchApp.fetch(apiUrl, { method: "post", contentType: "application/json", payload: JSON.stringify(payload) }); }
关键修改说明
- 修正目标列匹配:将原脚本中判断
col == 11(K列)改为col === 10(J列),精准匹配需求的状态列。 - 增加值校验逻辑:获取编辑单元格内容并去除首尾空格,严格判断是否等于
「Hoàn Thành」,彻底避免误触发。 - 固定目标工作表:直接通过
getSheetByName("Task")锁定工作表,替代原脚本的getActiveSheet(),防止切换工作表时触发错误逻辑。 - 优化API请求方式:将原GET请求改为POST请求,用JSON payload传递参数,避免长内容时的URL长度限制问题。
- 提升代码可读性:重命名变量、拆分条件判断,让逻辑更清晰,后续维护更便捷。
内容的提问来源于stack exchange,提问作者HOANG TRUNG LE
相关产品推荐
相关产品推荐

