Я пытаюсь построить программу в Google Apps Script, которая берет данные из листа Google, обрабатывает их в виде графика, используя Служба GAS Charts , а затем помещает график в классические сайты Google, используя Служба сайтов .
Используя пример кода 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;
}
Затем я помещаю график на новую страницу сайтов Google с помощью простого HTML-шаблон :
var pageTemplate = HtmlService.createTemplateFromFile("page template.html");
pageTemplate.image = graphTest();
var currentPage = site.createWebPage("graph", "graph", pageTemplate.evaluate().getContent())
Шаблон страницы содержит строку для изображения:
<img src = <?!=image?>>
Этот код теоретически будет работать нормально, но при просмотрепри выводе в Sites страница HTML является просто загадкой
<img src="javascript:void(0);">
Выполнение кода в базовом компиляторе HTML работает абсолютно нормально, , так что я могу поверить, что нетПроблема с самой кодировкой Base64.Кажется, что это просто несовместимо со старыми сайтами Google.В самом деле, прямой ввод HTML-кода на страницу, например
<img src="data:image/png;base64, *all the Base64 data here* ">
, дает тот же самый JavaScript: void (0);как код GAS.
Разве старые сайты Google не принимают кодировку Base64 для изображений?Есть ли альтернативный способ получить графическое изображение на сайтах Google с помощью Google Apps Script?
Спасибо,
Alex