javascript - 将对象添加到 inlineImages sendEmail 参数
问题描述
我正在使用以下内容遍历工作表名称“图表”上的所有图表,并将它们作为内联图像附加。
在 htmlBody 中,我将需要的每个图表引用为字符串 ChartXString。
var Chart1Sheet = SpreadsheetApp.getActive().getSheetByName('Charts');
var charts1 = Chart1Sheet.getCharts();
var chartBlobs1=new Array(charts1.length);
var emailImages1={};
for(var i=0;i<charts1.length;i++){
var builder = charts1[i].modify();
builder.setOption('vAxis.format', '#');
var newchart = builder.build();
chartBlobs1[i]= newchart.getAs('image/png');
chart1String = "<p align='center'><img src='cid:chart"+0+"'></p>";
chart2String = "<p align='center'><img src='cid:chart"+1+"'></p>";
chart3String = "<p align='center'><img src='cid:chart"+2+"'></p>";
chart4String = "<p align='center'><img src='cid:chart"+3+"'></p>";
emailImages1["chart"+i]= chartBlobs1[i];
}
myHTML = myHTML + myHTML2 + myHTML3 + myHTML4 + myHTML5 + chart1String + chart2String + chart3String + chart4String + myHTML6;
recipient = 'email@address';
subject = 'My subject text';
body = 0;
MailApp.sendEmail(recipient, subject, body, {htmlBody: myHTML, inlineImages:emailImages1});
这工作得很好,但是我想添加一个图像,如文档中的示例。
var youtubeLogoUrl =
"https://developers.google.com/youtube/images/YouTube_logo_standard_white.png";
var youtubeLogoBlob = UrlFetchApp
.fetch(youtubeLogoUrl)
.getBlob()
.setName("youtubeLogoBlob");
MailApp.sendEmail({
to: "recipient@example.com",
subject: "Logos",
htmlBody: "inline YouTube Logo <img src='cid:youtubeLogo'>",
inlineImages:
{
youtubeLogo: youtubeLogoBlob
}
});
我认为问题在于不了解如何添加对象。这是我到目前为止所尝试的:
var youtubeLogoUrl =
"https://developers.google.com/youtube/images/YouTube_logo_standard_white.png";
var youtubeLogoBlob = UrlFetchApp
.fetch(youtubeLogoUrl)
.getBlob()
.setName("youtubeLogoBlob");
LogoStr = "<img src='cid:youtubeLogo'>";
var Chart1Sheet = SpreadsheetApp.getActive().getSheetByName('Charts');
................
chart4String = "<p align='center'><img src='cid:chart"+3+"'></p>";
emailImages1["chart"+i]= chartBlobs1[i] + youtubeLogoBlob;
}
myHTML = LogoStr + myHTML + myHTML2 + myHTML3 + myHTML4 + myHTML5 + chart1String + chart2String + chart3String + chart4String + myHTML6;
recipient = 'email@address';
subject = 'My subject text';
body = 0;
MailApp.sendEmail(recipient, subject, body, {htmlBody: myHTML, inlineImages:emailImages1});
我也尝试过:
MailApp.sendEmail(recipient, subject, body, {htmlBody: myHTML, inlineImages:emailImages1,youtubeLogoBlob});
解决方案
- 您想作为 inlineImages包含
youtubeLogoBlob
在内。emailImages1
如果我的理解是正确的,那么这个修改呢?请修改您问题中的第三个脚本,如下所示。
从:
emailImages1["chart"+i]= chartBlobs1[i] + youtubeLogoBlob;
}
myHTML = LogoStr + myHTML + myHTML2 + myHTML3 + myHTML4 + myHTML5 + chart1String + chart2String + chart3String + chart4String + myHTML6;
recipient = 'email@address';
subject = 'My subject text';
body = 0;
MailApp.sendEmail(recipient, subject, body, {htmlBody: myHTML, inlineImages:emailImages1});
到:
emailImages1["chart"+i]= chartBlobs1[i]; // Modified
}
emailImages1["youtubeLogo"] = youtubeLogoBlob; // Added
myHTML = myHTML + myHTML2 + myHTML3 + myHTML4 + myHTML5 + chart1String + chart2String + chart3String + chart4String + myHTML6;
recipient = 'email@address';
subject = 'My subject text';
body = 0;
MailApp.sendEmail(recipient, subject, body, {htmlBody: myHTML, inlineImages:emailImages1}); // Modified
笔记:
- 在您的脚本中,您显示的脚本中未声明的几个变量,请注意这一点。
如果我误解了你的问题,我很抱歉。
推荐阅读
- python - Python - 有没有办法将字符串转换为 bytes16?
- r - 使用所需名称字符串编写栅格时出现问题
- java - 在不冻结 gui 的情况下处理另一个线程
- json - nginx + PostgreSQL:返回 JSON 对象
- python - 如何使用 Keras 在密集层中使用 dropout 创建自动编码器
- python - InvalidArgumentError(参见上文的追溯):不兼容的形状:[28,1] vs. [32,1]
- php - MYSQL 具有总计的不同值
- django - How to properly login user via Django
- google-sheets - COUNTIF 多个条件在多个工作表中具有不同的范围
- javascript - 使用 for 循环等效实现 Array.prototype.map