使用Apps Script将Google Drive图片嵌入邮件模板失败求助
解决Google Drive图片嵌入邮件模板无法显示的问题
问题原因
你当前使用的是Google Drive的文件预览链接(带/view路径),这类链接用于在浏览器中打开文件预览,并非直接的图片资源地址,邮件客户端无法解析并加载图片。
解决方案
方法1:修改为直接访问的图片链接
将Drive文件链接转换为可直接获取图片资源的格式:
- 原链接格式:
https://drive.google.com/file/d/[文件ID]/view?usp=drive_link - 修改后格式:
https://drive.google.com/uc?id=[文件ID]
针对你的图片,修改后的<img>标签应为:
<img src="https://drive.google.com/uc?id=1Ewi5KgPDOMYTy9ebFBate6rfw0IsoFIN" alt="图片描述"/>
注:确保已将图片权限设置为「知道链接的任何人可查看」,你已完成此操作,无需额外调整。
方法2:用Apps Script内联嵌入图片(更稳定)
直接依赖外部链接可能存在缓存或权限波动问题,使用内联嵌入能确保图片稳定显示:
- 通过文件ID获取Drive文件并提取Blob:
const imageFileId = "1Ewi5KgPDOMYTy9ebFBate6rfw0IsoFIN"; const imageBlob = DriveApp.getFileById(imageFileId).getBlob();
- 发送邮件时指定
inlineImages参数关联图片:
MailApp.sendEmail({ to: "recipient@example.com", subject: "邮件主题", htmlBody: '<p>这是嵌入的图片:<img src="cid:embeddedImage"/></p>', inlineImages: { embeddedImage: imageBlob // 键名需与html中的cid:xxx对应 } });
说明:HTML中的cid:embeddedImage需与inlineImages对象的键名完全一致,邮件客户端会自动匹配并显示内联图片。
额外注意
- 如果你的文件是Google Docs/Slides/Sheets等文档,需先导出为图片格式(如PNG/JPG),再使用上述方法嵌入。
- 内联嵌入方式不依赖外部链接,即使后续Drive链接权限调整,已发送的邮件仍能正常显示图片。
内容的提问来源于stack exchange,提问作者WN Legacy
相关产品推荐
相关产品推荐

