修改Google Sheet脚本:将指定工作表以图片嵌入邮件正文
修改后的Google Sheet脚本:将工作表以图片嵌入邮件正文
以下是调整后的完整脚本,可实现将指定工作表转为图片并嵌入邮件正文:
function sendSheetTabAsImage() { var sheetName = 'sheetname'; // 替换为你的工作表名称 var destinationEmail = 'name@domain.com'; // 替换为目标邮箱 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); if (!sheet) { Logger.log('未找到指定工作表:' + sheetName); return; } // 构造导出图片的URL,可根据需求调整参数 var exportParams = [ 'gid=' + sheet.getSheetId(), 'format=png', // 导出格式改为PNG 'size=legal', // 图片尺寸,可选值如letter/legal/tabloid等 'gridlines=false', // 是否显示网格线,false为隐藏 'printtitle=false', // 是否显示标题 'sheetnames=false', // 是否显示工作表名称 'fzr=false', // 是否冻结首行 'fzc=false' // 是否冻结首列 ].join('&'); var url = 'https://docs.google.com/spreadsheets/d/' + ss.getId() + '/export?' + exportParams; var options = { method: 'GET', headers: { authorization: 'Bearer ' + ScriptApp.getOAuthToken() } }; try { var result = UrlFetchApp.fetch(url, options); var imageContent = result.getContent(); // 将二进制图片转为Base64编码,用于嵌入HTML正文 var base64Image = Utilities.base64Encode(imageContent); var subject = '工作表图片:' + sheetName; // 纯文本备用内容(不支持HTML的邮箱会显示这个) var textBody = '请查看附件中的工作表图片。'; // HTML正文,嵌入图片 var htmlBody = '<p>请查看下方工作表图片:</p>' + '<img src="data:image/png;base64,' + base64Image + '" alt="' + sheetName + '工作表图片" style="max-width:100%;" />'; // 发送邮件,同时支持纯文本和HTML格式 GmailApp.sendEmail( destinationEmail, subject, textBody, { htmlBody: htmlBody, // 可选:同时添加图片附件 attachments: [{ fileName: sheetName + '.png', content: imageContent, mimeType: 'image/png' }] } ); Logger.log('邮件发送成功'); } catch (e) { Logger.log('发送失败:' + e.toString()); } }
关键改动说明
- 导出格式切换:将原脚本的
format=pdf改为format=png,同时添加多个可选参数优化图片显示效果,可根据实际需求调整(比如开启网格线就把gridlines=false改为true)。 - Base64编码转换:使用
Utilities.base64Encode()将二进制图片内容转为Base64编码,这是HTML嵌入图片的标准方式。 - HTML邮件构造:新增
htmlBody参数,通过<img>标签将Base64图片直接嵌入邮件正文,同时保留textBody作为纯文本 fallback,兼容不同邮箱客户端。 - 错误处理:新增工作表存在性检查和try-catch块,避免因找不到工作表或网络问题导致脚本崩溃。
- 可选附件:保留了图片作为附件的选项,若不需要可删除
attachments参数部分。
内容的提问来源于stack exchange,提问作者Daniela Patta
相关产品推荐
相关产品推荐

