Google Sites HTML возвращает кодировку изображения Base64 как javascript:void(0);

Я пытаюсь создать программу в Google Apps Script, которая берет данные из листа Google, обрабатывает их в график с использованием Сервис карт GAS, а затем размещает график на классических сайтах 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 Sites, используя простой HTML-шаблон:

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 работает абсолютно нормально,, так что это наводит меня на мысль, что с самой кодировкой Base64 проблем нет. Кажется, он просто несовместим со старыми сайтами Google. Действительно, непосредственно записывая HTML-код на страницу, например

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

дает тот же javascript:void(0); как код ГАЗ.

Старые сайты Google не поддерживают кодировку изображений Base64? Есть ли альтернативный способ получить изображение графика на сайтах Google через скрипт Google Apps?

Спасибо,

Алекс

Не ответ, но вы должны использовать encodeURIComponent для всего, кроме полных URL-адресов.

Heretic Monkey 04.03.2019 17:38

Я ожидаю, что вывод страницы будет иметь <img border='1' ....>, поскольку это то, что добавляется htmlOutput.append. Если вы не видите границы своего тега изображения, я предполагаю, что вы не видите вывод этой части кода.

James 04.03.2019 17:51

@James htmlOutput, созданный в graphTest(), отделен от шаблона, который я в конечном итоге использовал на самой странице. Это остаток кода, который я скопировал и вставил со страницы службы диаграмм. Немного запутанная оплошность с моей стороны, я мог бы вернуться и удалить эти пару строк.

Alex Appleby 04.03.2019 18:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
389
1

Ответы 1

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

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

<embed src = "*Base64 Data*">

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

Другие вопросы по теме