配置Google Sheets脚本:勾选H列复选框触发Telegram消息
谷歌表格H列复选框触发Telegram消息配置方案
需求概述
当表格「Авансы」工作表的H列(复选框列)被勾选时,自动发送包含当前行数据的Telegram消息,仅处理触发操作的当前行,避免遍历所有数据。
原脚本存在的问题
- 使用
timer函数遍历所有行,未绑定复选框点击的触发事件; sendText函数嵌套在无效条件判断中,存在语法错误;- 列索引取值超出
getRange定义的范围,导致数据获取异常; - 缺少触发逻辑,无法在复选框点击时自动执行;
- 未处理重复发送问题,可能导致同一行多次推送消息。
修改后的完整脚本
// 替换为你的Telegram Bot Token const TELEGRAM_TOKEN = "你的BotToken"; // 替换为你的目标Chat ID const CHAT_ID = "你的ChatID"; function onEdit(e) { const ss = e.source; const ws = ss.getSheetByName("Авансы"); // 判断是否是「Авансы」工作表的H列(第8列)复选框触发 if (!ws || e.range.getColumn() !== 8 || !e.value) return; const row = e.range.getRow(); // 跳过表头行(第1行) if (row === 1) return; // 获取当前行的所有数据(根据实际列数调整,这里取到第12列) const rowData = ws.getRange(row, 1, 1, 12).getValues()[0]; const partner = rowData[0]; const inn = rowData[1]; const order = rowData[3]; const data_order = rowData[4]; const sum_prepayment = rowData[5]; const executor = rowData[11]; const data_request_sent_cell = ws.getRange(row, 9); // I列:记录发送时间 // 检查是否已发送过消息,避免重复触发 if (data_request_sent_cell.getValue() !== "") return; // 组装消息内容 const message = `Отправлен запрос, контрагенту ${partner} (ИНН ${inn} ). По заказу: ${order} от ${data_order}, сумма аванса:${sum_prepayment} руб. Запрос отправил: ${executor} .`; // 发送Telegram消息 sendText(CHAT_ID, message); // 记录发送时间,标记已处理 data_request_sent_cell.setValue(new Date()); } function sendText(chatId, text) { const url = `https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage`; const payload = { chat_id: String(chatId), text: text, parse_mode: 'HTML' }; const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload) }; UrlFetchApp.fetch(url, options); }
配置步骤
填写关键参数:
- 将
TELEGRAM_TOKEN替换为你的Telegram机器人Token(通过@BotFather创建机器人获取); - 将
CHAT_ID替换为接收消息的聊天ID(可通过@userinfobot获取)。
- 将
设置触发器:
- 打开谷歌表格的「扩展程序」→「Apps脚本」;
- 将修改后的脚本粘贴到编辑器,保存项目;
- 点击编辑器左侧的「触发器」图标,添加新触发器:
- 选择函数:
onEdit; - 选择事件源:「从电子表格」;
- 选择事件类型:「编辑时」;
- 保存并授权必要权限。
- 选择函数:
测试功能:
- 在「Авансы」工作表的H列勾选任意行的复选框;
- 检查Telegram聊天是否收到对应消息,同时I列会自动记录发送时间。
注意事项
- 确保表格「Авансы」的列索引与脚本一致:A列=索引0,H列=第8列,I列用于记录发送时间;
- 脚本通过I列内容判断是否已发送消息,避免重复触发;
- 若需处理「预付款到账」的复选框,可复制逻辑修改列索引和消息内容;
- 首次运行需授权谷歌脚本访问UrlFetchApp和表格数据的权限。
内容的提问来源于stack exchange,提问作者Dmitriy Amangaliev
相关产品推荐
相关产品推荐

