如何从Google Sheet数据数组中获取当日对应最后一行并发送到Telegram
修复后的可用代码
const token = "替换为你自己的Telegram机器人Token"; function timer() { let ss = SpreadsheetApp.getActiveSpreadsheet(); // 替换为你自己的工作表名称 let ws = ss.getSheetByName("SheetName"); let data = ws.getRange(2, 1, ws.getLastRow()-1, 10).getValues(); // 生成今日日期字符串,格式和表格里的一致:日.月.年 let todayStr = new Date().getDate() + "." + (new Date().getMonth() + 1) + "." + new Date().getFullYear(); // 替换为你自己的Telegram聊天ID let clientIdChat = "替换为你自己的聊天ID"; // 倒序遍历数组,从最后一行(最新新增的行)往第一行找 for (i = data.length - 1; i >= 0; i--) { let row = data[i]; // 跳过A列空的行 if (!row[0]) continue; // 把当前行的日期转成和今日相同格式的字符串 let rowDateStr = row[0].getDate() + "." + (row[0].getMonth() + 1) + "." + row[0].getFullYear(); // 判断是否是今日的行 if (rowDateStr === todayStr) { // 格式化当前行的内容为可读消息,不需要的字段可以删掉 let msg = ` 📅 日期:${rowDateStr} 🏢 公司:${row[1]} 🆔 ІПН:${row[2]} 👤 姓名:${row[3]} 📑 案件号:${row[4]} ⚖️ 法院:${row[5]} 📍 地区:${row[6]} 🏙️ 城市:${row[7]} 🏠 地址:${row[8]} 🔗 文档链接:${row[9]} ` // 发送当前行的消息 sendText(clientIdChat, msg.trim()); // 如果要发送所有今日的新增行,就把下面这行break删掉,只留最新的就保留 break; } } } function sendText(chatId, text, keyBoard) { let data = { method: 'post', payload: { method: 'sendMessage', chat_id: String(chatId), text: text, parse_mode: 'HTML', reply_markup: JSON.stringify(keyBoard) } } UrlFetchApp.fetch('https://api.telegram.org/bot' + token + '/', data); }
关键修改说明
- 把原来的正序遍历改成倒序遍历,优先匹配最新添加的行,确保拿到的是最后新增的当日数据
- 修复了发送内容的错误,原来的代码发的是整个表格的所有数据,现在只发匹配到的当日行内容
- 增加了消息格式化逻辑,发送的内容可读性更高,不需要的字段可以直接删除msg里对应的行
- 你只需要修改代码开头三个位置的内容:机器人Token、工作表名称、Telegram聊天ID,就可以直接使用
- 如果需要发送当天所有的新增行,删除代码里
break;那一行即可
内容的提问来源于stack exchange,提问作者Brown
相关产品推荐
相关产品推荐

