gpt4 book ai didi

javascript - 为 MailApp.sendMail 动态创建 inlineImages JSON

转载 作者:行者123 更新时间:2023-12-03 08:18:04 26 4
gpt4 key购买 nike

我正在制作一个 Google Apps 脚本,该脚本根据 Google 文档文件中制作的模板发送电子邮件。 Google 文档文件如下所示:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi pulvinar odio ac velit maximus, et dapibus justo porttitor. Morbi libero quam, hendrerit ut ex vulputate, viverra pellentesque leo. Aenean sodales vulputate tellus rutrum lobortis.

image1

Morbi sed molestie lectus, in mattis magna. Maecenas imperdiet quis sem nec eleifend. Ut at nulla ornare, egestas nibh nec, sodales risus. Duis risus augue, dictum in molestie vitae, vestibulum eu sapien.

image2

Phasellus nulla elit, ornare at leo vitae, pellentesque scelerisque dui. Phasellus commodo lectus eu nisl ullamcorper ullamcorper. Sed velit tellus, tempor in efficitur ac, semper vel nunc.

首先,我从 Google 文档中检索文本:

var emailText = DocumentApp.openById(emailtextID).getBody().getText();

接下来,替换模板文本中的image#以生成cid:

var startImageNumber = 1;
while(emailText.indexOf("image" + startImageNumber) !=-1){
emailTextHtml = emailText.replace("image" + startImageNumber, "<br> <img src='cid:image" + startImageNumber + "'> <br>");
startImageNumber++;
}

现在模板已准备好在邮件中使用。但是,首先必须检索图像 blob,并且必须创建 cid 的 JSON。这些图像是 png 文件,它们位于 Google 云端硬盘中与 Google 文档相同的文件夹中。 imageBlobs JSON 保存检索到的图像中的 blob,并且 blobJSON 基本上是一个将 cid 链接到 imageBlobs JSON 中的 imageBlob 变量的 JSON。

var imageBlobs = {};
var blobJSON = {};
for(i = 0; i < startImageNumber - 1; i++){
try{
imageBlobs["imageBlob" + (i+1)] = DriveApp.getFilesByName("image" + (i+1) + ".PNG").next().getBlob().setName("imageBlobs.imageBlob" + (i+1));
blobJSON["image" + (i+1)] = "imageBlobs.imageBlob" + (i+1);
}
catch(e){
Logger.log("Error: " + e);
}
}

最后,一旦检索到 blob,我就想发送邮件。当我执行以下操作时(即使用带有 blob 的动态创建的 JSON),我收到错误:

MailApp.sendEmail({to: "test@test.com",subject: "Testsubject",
htmlBody: emailTextHtml, inlineImages: blobJSON});

错误消息显示:

Invalid argument: attachments (line ..., file "")

我在这里做错了什么?当我尝试仅使用 inlineImages 时,为什么会收到一条错误消息,指出我缺少附件?

非常感谢任何帮助!

罗宾

最佳答案

我没有看到完整的代码,我尝试建议您必须像这样忽略 inlineImages 值:

inlineImages: Object.keys(blobJSON).reduce(function(pV, cV, i) {
pV[cV] = eval(blobJSON[cV]);
return pV;
},{})

这对我来说很好用。有一个example .

关于javascript - 为 MailApp.sendMail 动态创建 inlineImages JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850027/

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