采得百花成蜜后,为谁辛苦为谁甜。这篇文章主要讲述使用Appscript将Google图表中的3d图表作为图像插入电子邮件中相关的知识,希望能为你提供帮助。
我正在尝试使用以下代码将谷歌表中的3D图表插入电子邮件,但电子邮件中的图像将转换为2D。任何人都可以帮我把谷歌表中的图表拉成一封包含所有属性的电子邮件吗?
原始图表
电子邮件中的图表
function email(sheet, toMail, ccMail, msg){
var charts = sheet.getCharts();
var emailImages={};
var chartBlobs=new Array(charts.length);
for(var i=0;
i<
charts.length;
i++){
chartBlobs[i]= charts[i].getAs("image/png").setName("chartBlob"+i);
emailBody= emailBody + "<
p align='left'>
<
img src='https://www.songbingjia.com/android/cid:chart"+i+"'>
<
/p>
";
emailImages["chart"+i]= chartBlobs[i];
}
MailApp.sendEmail({
to: toMail,
cc: ccMail,
subject: "ABC",
htmlBody: emailBody,
inlineImages:emailImages});
}
答案
- 您想在电子表格上发送包含3D图表的电子邮件。
Flow of modified script:
- 从电子表格中检索图表。
- 创建Google幻灯片作为时间。
- 将图表作为图像插入幻灯片。
- 将插入的图表检索为blob。
- 发送包含检索到的blob的电子邮件。
- 删除时态Google幻灯片。
在此修改中,我修改了您的脚本。请修改您的脚本如下。
function email(sheet, toMail, ccMail, msg){
var charts = sheet.getCharts();
var slides = SlidesApp.create("sample");
// Added
var slide = slides.getSlides()[0];
// Addedvar emailImages={};
var chartBlobs=new Array(charts.length);
var emailBody = "";
// Added
for(var i=0;
i<
charts.length;
i++){
var image = slide.insertSheetsChartAsImage(charts[i]);
// Added
chartBlobs[i]= image.getAs("image/png").setName("chartBlob"+i);
// Modified
emailBody= emailBody + "<
p align='left'>
<
img src='https://www.songbingjia.com/android/cid:chart"+i+"'>
<
/p>
";
emailImages["chart"+i]= chartBlobs[i];
}
MailApp.sendEmail({
to: toMail,
cc: ccMail,
subject: "ABC",
htmlBody: emailBody,
inlineImages:emailImages});
DriveApp.getFileById(slides.getId()).setTrashed(true);
// Added
}
Note:
- 在此修改后的脚本中,时态Google幻灯片已移至回收站框。
- 我向the issue tracker报告了这个问题。
- Save a canvas image to google drive. 我也在这里提出了上述解决方法。
- insertSheetsChartAsImage()
- setTrashed()
推荐阅读
- Google Apps脚本传递网址参数Google信息中心
- BaseObject可以有NSObject,Mappable和Object swift
- 正确处理Android上的Realm实例
- Android Realm Schema不匹配错误
- 在Android Studio中集成Realm时出错
- 在React Native App上打开Realm Studio
- android错误(RealmClass注释不支持嵌套类)
- 非root用户手机Android用户可以查看/编辑存储在Realm DB中的数据吗()
- java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget