Google Sites HTML返回的Base64图像编码为javascript:void(0);

时间:2019-03-04 16:36:44

标签: javascript html google-apps-script google-sites

我正尝试在Google Apps脚本中构建一个程序,该程序从google表格中获取数据,使用GAS Charts Service将其处理为图形,然后使用{{3 }}。

使用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;
}

然后我使用简单的Sites Service将图形放置在新的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);">

HTML Template,因此使我相信Base64编码本身没有问题。它似乎与旧版Google网站不兼容。确实,直接将HTML代码写到页面中,例如

<img src="data:image/png;base64, *all the Base64 data here* ">

提供相同的javascript:void(0);作为GAS代码。

旧版Google网站是否不接受图片的Base64编码?是否可以通过Google Apps脚本将图形图像获取到Google网站上?

谢谢

亚历克斯

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题:

经过大量的实验,我可以使用

<embed src = "*Base64 Data*">

标签代替img标签成功。这既可以通过Google Apps脚本,也可以通过Google Sites HTML编辑器来实现。