我制作的Google Apps脚本根据Google Doc文件中的模板发送电子邮件。 Google Doc文件如下所示:
Lorem ipsum dolor坐下来,精神上的精神。 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。在nulla ornare,egestas nibh nec,sodales risus。 Duis risus augue,molestie vitae,vestibulum eu sapien的格言。
IMAGE2
Phasellus nulla elit,ornare at leo vitae,pellentesque scelerisque 酒后驾车。 Phasellus commodo lectus eu nisl ullamcorper ullamcorper。桑达 velit tellus,temporur 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++;
}
现在模板已准备好在邮件中使用。但是,首先必须检索图像斑点,并且必须制作cid的JSON。这些图片是png文件,它们位于Google云端硬盘所在的Google云端硬盘中的同一文件夹中。 imageBlobs JSON保存检索到的图像中的blob,blobJSON基本上是一个JSON,它将cid与imageBlobs JSON中的imageBlob变量相关联。
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的JSON),我收到错误:
MailApp.sendEmail({to: "test@test.com",subject: "Testsubject",
htmlBody: emailTextHtml, inlineImages: blobJSON});
错误消息显示:
无效的参数:附件(行...,文件&#34;&#34;)
我在这里做错了什么?为什么我在尝试仅使用内联图片时收到错误消息,说我错过了附件?
非常感谢任何帮助!
罗宾
答案 0 :(得分:1)
我没有看到整个代码,我试图建议您必须像这样增加inlineImages
值:
inlineImages: Object.keys(blobJSON).reduce(function(pV, cV, i) {
pV[cV] = eval(blobJSON[cV]);
return pV;
},{})
它对我很好。有example。