我正在尝试在Google Apps脚本中构建一个程序,该程序从google工作表中获取数据,使用GAS Charts Service将其处理为图形,然后使用Sites Service将图形放置在Classic Google Sites上。
使用Charts示例代码,我编译了一个图:
function graphTest () {
var data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, 'Month')
.addColumn(Charts.ColumnType.NUMBER, 'In Store')
.addColumn(Charts.ColumnType.NUMBER, 'Online')
.addRow(['January', 10, 1])
.addRow(['February', 12, 1])
.addRow(['March', 20, 2])
.addRow(['April', 25, 3])
.addRow(['May', 30, 4])
.build();
var chart = Charts.newAreaChart()
.setDataTable(data)
.setStacked()
.setRange(0, 40)
.setTitle('Sales per Month')
.build();
var imageData = Utilities.base64Encode(chart.getAs('image/png').getBytes());
var imageUrl = "data:image/png;base64," + encodeURI(imageData);
return imageUrl;
}
然后我使用简单的HTML Template将图表放在新的Google协作平台页面上:
var pageTemplate = HtmlService.createTemplateFromFile("page template.html");
pageTemplate.image = graphTest();
var currentPage = site.createWebPage("graph", "graph", pageTemplate.evaluate().getContent())
页面模板包含图像的一行:
<img src = <?!=image?>>
理论上,这段代码可以正常工作,但是在查看网站中的输出时,页面HTML只是一个神秘的内容
<img src="javascript:void(0);">
Running the code in a basic HTML compiler works absolutely fine,让我相信Base64编码本身没有问题。它似乎与Old Google Sites不兼容。的确,直接将HTML代码写入页面,就像
<img src="data:image/png;base64, *all the Base64 data here* ">
给出相同的javascript:void(0);作为GAS代码。
旧版Google协作平台不接受图像的Base64编码吗?有没有其他方法可以通过Google Apps脚本将图形图像添加到Google网站上?
谢谢,
亚历克斯
回答我自己的问题:
经过大量的实验,我能够使用
<embed src = "*Base64 Data*">
标记代替img标记成功。这可以通过Google Apps脚本和Google Sites HTML编辑器完成。