Сайты Google HTML, возвращающий кодировку Base64 изображения в виде javascript: void (0); - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь построить программу в 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

1 Ответ

0 голосов
/ 14 марта 2019

Чтобы ответить на мой собственный вопрос:

После долгих экспериментов я смог с успехом использовать тег

<embed src = "*Base64 Data*">

вместо тега img.Это работало как через Google Apps Script, так и через HTML-редактор сайтов Google.

...