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

使用Google Apps Script将表格行转为格式化列表发送给Telegram机器人

解决方案

要把Google表格里的单列姓名转换成Telegram支持的项目符号列表,用map+join组合就能轻松实现,比forEach更简洁直观。

完整实现代码

function sendlist(chatId) {
  // 从表格获取所有行数据(二维数组格式)
  var rows = SpreadsheetApp.openById(neueliste).getSheetByName('Liste').getDataRange().getValues();
  
  // 可选:如果表格第一行是表头(比如"姓名"),移除表头行
  rows.shift();
  
  // 将二维数组转换为带项目符号的字符串
  var formattedList = rows.map(row => `- ${row[0]}`).join('\n');
  
  // 处理空列表场景,避免发送空消息
  if (!formattedList) {
    formattedList = "当前列表为空";
  }
  
  // 调用Telegram机器人的发送方法
  sendText(chatId, formattedList);
}

关键逻辑说明

  1. 数组转换:

    • rows.map(row => - ${row[0]}):遍历每一行数据,取出单列的姓名(row[0]),给每个姓名加上- 前缀,生成单个项目符号行。
    • .join('\n'):把所有项目行用换行符拼接成完整的列表字符串,Telegram会自动识别换行并显示为多行项目列表。
  2. 表头处理:

    • 如果你的表格第一行是表头(比如"姓名"),用rows.shift()移除第一行;如果没有表头,直接删除这行代码即可。
  3. 空列表兼容:

    • 当表格没有数据时,formattedList会是空字符串,这里加了判断,替换成提示文本,避免发送空消息。

命令调用示例

在你的机器人命令处理逻辑里,添加/getlist命令的触发:

if (text.startsWith('/getlist')) {
  sendlist(id); // id为Telegram聊天的唯一ID
}

补充:forEach的实现方式(如果你想尝试)

之前用forEach没成功,可能是没正确拼接字符串,以下是forEach的写法:

function sendlist(chatId) {
  var rows = SpreadsheetApp.openById(neueliste).getSheetByName('Liste').getDataRange().getValues();
  rows.shift(); // 移除表头(可选)
  
  var formattedList = '';
  rows.forEach(row => {
    formattedList += `- ${row[0]}\n`;
  });
  
  // 移除最后多余的换行符
  formattedList = formattedList.trim();
  
  if (!formattedList) {
    formattedList = "当前列表为空";
  }
  
  sendText(chatId, formattedList);
}

内容的提问来源于stack exchange,提问作者mega

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:35:13