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

如何遍历Google Sheet带超链接单元格批量发送图片到Telegram

完整功能实现方案

举个例子,我有一个单元格范围,内含10条指向图片的Google Drive超链接:
F1:O1
以下代码可实现遍历F2到O2范围内的单元格,发送所有非空的图片到Telegram群组,遇到空单元格自动终止迭代,同时动态生成Foto 1到Foto N的对应caption。

// 配置项,修改为自己的参数即可
const CONFIG = {
  SHEET_NAME: "AWESOME", // 工作表名称
  GROUP_ID: "你的群组ID", // Telegram群组ID
  BOT_TOKEN: "你的Bot Token", // Telegram Bot的API Token
  IMAGE_COL_START: 6, // 图片列起始位置:F列对应第6列
  MAX_IMAGE_COUNT: 10 // 最多读取10张图片(F到O共10列)
}

// 主函数,直接运行即可执行发送
function sendAllDriveImages() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName(CONFIG.SHEET_NAME);
  // 读取第2行从F列开始的10个单元格值
  const imageValues = sh.getRange(2, CONFIG.IMAGE_COL_START, 1, CONFIG.MAX_IMAGE_COUNT).getValues()[0];
  
  const photoArr = [];
  for (let i = 0; i < imageValues.length; i++) {
    const url = imageValues[i] ? imageValues[i].trim() : '';
    // 遇到空单元格直接终止遍历
    if (!url) break;
    // 处理Google Drive共享链接为直链,确保Telegram可读取
    const directUrl = convertDriveToDirectUrl(url);
    // 组装media参数,动态生成caption
    photoArr.push({
      "type": "photo",
      "media": directUrl,
      "caption": `Foto ${i+1}`
    })
  }

  // 有有效图片才发送请求
  if (photoArr.length > 0) {
    sendMediaGroup(photoArr);
  }
}

// Google Drive共享链接转直链工具函数
function convertDriveToDirectUrl(url) {
  // 匹配格式https://drive.google.com/file/d/xxx/view
  const fileIdMatch = url.match(/\/d\/([a-zA-Z0-9-_]+)\//);
  if (fileIdMatch) {
    return `https://drive.google.com/uc?export=view&id=${fileIdMatch[1]}`;
  }
  // 已经是直链的直接返回
  return url;
}

// 调用Telegram Bot发送媒体组
function sendMediaGroup(photoArr) {
  const payload = {
    'method': 'sendMediaGroup',
    'chat_id': String(CONFIG.GROUP_ID),
    'media': JSON.stringify(photoArr)
  }

  const options = {
    "method": "post",
    "payload": payload,
    'muteHttpExceptions': true,
  }
  
  const response = UrlFetchApp.fetch(`https://api.telegram.org/bot${CONFIG.BOT_TOKEN}/`, options);
  // 调试用,可打开注释查看返回结果
  // Logger.log(response.getContentText());
}

关键逻辑说明

  • 空单元格终止逻辑:遍历最多10个单元格过程中,只要遇到空值就直接跳出循环,不会继续读取后面的单元格,完全符合需求
  • 动态caption生成:自动按照遍历顺序生成Foto 1、Foto 2……的标题,数量和实际有效图片数量一致
  • Drive链接兼容:自动将Google Drive的常规分享链接转换为Telegram可以直接识别的直链,避免图片加载失败
  • 配置抽离:所有需要修改的参数都放在顶部CONFIG对象里,不需要修改业务逻辑,降低出错概率

使用注意事项

  1. 首次运行需要授权Google Sheets和UrlFetchApp的权限
  2. Telegram Bot需要先加入目标群组,并且拥有发送消息的权限
  3. Google Drive的图片需要设置为「任何拥有链接的人都可以查看」的权限,否则Telegram无法读取图片

内容的提问来源于stack exchange,提问作者Carlos Hernández Quiñones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:15:03