You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 += "&#x1F4DD   <strong> ĐỀ NGHỊ PHÊ DUYỆT CÔNG VIỆC</strong> \n";
  message += "------------------------------------------------------------- \n  \n";
  message += "<code> &#x1F4C5 " + Utilities.formatDate(new Date(), "GMT+7", "dd/MM/yyyy hh:mm:ss") + "</code> \n \n ";
  message += "<em> &#x1F538 Huyền Phương đã làm xong công việc</em>:  <code>" + data[0][1] + "</code> \n";
  message += "&#x2705 anh Trung vào kiểm tra ngay nhé &#x2705 \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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:03:53