如何遍历Google Sheet带超链接单元格批量发送图片到Telegram
完整功能实现方案
举个例子,我有一个单元格范围,内含10条指向图片的Google Drive超链接:
以下代码可实现遍历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对象里,不需要修改业务逻辑,降低出错概率
使用注意事项
- 首次运行需要授权Google Sheets和UrlFetchApp的权限
- Telegram Bot需要先加入目标群组,并且拥有发送消息的权限
- Google Drive的图片需要设置为「任何拥有链接的人都可以查看」的权限,否则Telegram无法读取图片
内容的提问来源于stack exchange,提问作者Carlos Hernández Quiñones
相关产品推荐
相关产品推荐

