gpt4 book ai didi

google-apps-script - Google Script CacheService 为 sendMail 中的 inlineImages 缓存图像

转载 作者:行者123 更新时间:2023-12-05 02:21:15 27 4
gpt4 key购买 nike

我想在 Google Script 的缓存服务中存储一张图片,然后将该图片作为内联图片插入到 HTML 邮件中。

我试过让它工作,但到目前为止没有成功。 Logger 中以下代码的错误是“无效参数:附件”。如果我检查它显示 sendMail() 中的 var 图标是一个 blob:

function onOpen(e){
var icon = DriveApp.getFileById('ID').getBlob().setName('icon');
var cache = CacheService.getDocumentCache().put('icon', icon);
}

function sendMail() {

var icon = CacheService.getDocumentCache().get('icon');

var email = 'test@example.de';
var subject = 'test';
var txt = 'test';
var html = '<img src="cid:icon"/>';

MailApp.sendEmail(email, subject, txt, {htmlBody: html, name : 'test', inlineImages:{icon:icon}});

}

令人惊讶的是,如果我这样做:

 function sendMail() {

var icon = DriveApp.getFileById('ID').getBlob().setName('icon');

var email = 'test@example.de';
var subject = 'test';
var txt = 'test';
var html = '<img src="cid:icon"/>';

MailApp.sendEmail(email, subject, txt, {htmlBody: html, name : 'test', inlineImages:{icon:icon}});

}

它工作正常。我的代码有什么问题?

最佳答案

谷歌 Cache Service accepts只有 string 值,而您正试图将一个明显不同类型的 blob 插入其中。一旦将其转换为正确的字符串 - 就没问题了。

为确保我们正确保存它,我们应该使用 base64encode。

尝试替换

var cache = CacheService.getDocumentCache().put('icon', icon);

var cache = CacheService.getDocumentCache()
cache.put('icon', Utilities.base64Encode(icon.getBytes()));

分别地,当您取回缓存值时,您将需要从我们的字符串创建一个新的 blob 对象。

首先我们创建空 blob 并读取缓存值:

var iconBlob = Utilities.newBlob("")
var cachedValue = cache.get('icon');

然后你可以像这样使用它:

iconBlob.setBytes(Utilities.base64Decode(cachedValue ))
iconBlob.setName('yourname')
iconBlob.setContentType('image/png')

您可以在 reference 中检查这两种方法.如果将对象字符串化,您也可以用相同的方式将对象保存在缓存服务中。

关于google-apps-script - Google Script CacheService 为 sendMail 中的 inlineImages 缓存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com