Google协作平台HTML将Base64图像编码返回为javascript:void(0);

问题描述 投票:1回答:1

我正在尝试在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网站上?

谢谢,

亚历克斯

javascript html google-apps-script google-sites
1个回答
0
投票

回答我自己的问题:

经过大量的实验,我能够使用

<embed src = "*Base64 Data*">

标记代替img标记成功。这可以通过Google Apps脚本和Google Sites HTML编辑器完成。

© www.soinside.com 2019 - 2024. All rights reserved.