Usar imágenes codificadas en base64 con HtmlService en Apps Script

¿Google Apps Script admite el uso de imágenes codificadas en base64 con servicio HTML? Estoy tratando de agregar imágenes a una página HTML utilizando encoding base64, pero no se muestran en la página final.

El HTML que trato de usar es:

 

Cuando registro el contenido html justo antes de que sea procesado por el servicio HTML, aparece como:

  

Esto funciona bien en JSFiddle y en HTML normal, pero en Apps Script, las imágenes no se muestran. Al ver el código fuente en la página representada, las tags de imagen aparecen de la siguiente manera:

  

¿Hay alguna otra manera de agregar imágenes codificadas en base64 a la página? Puedo obtener las imágenes como un blob, pero no creo que haya una forma de agregar directamente un blob al contenido HTML.

A partir de diciembre de 2014 , Google Apps Script ha agregado un modo de IFRAME pruebas IFRAME adicional, que admite URI de datos (ya que no utiliza el comstackdor de Caja). La desventaja es que el modo IFRAME no es compatible con navegadores más antiguos, pero dependiendo de sus requisitos eso puede no ser un problema.

Todo lo que se requiere es llamar a setSandboxMode() en su plantilla, y sus URI de datos deberían funcionar como se espera:

 var output = HtmlService.createHtmlOutput( '' ); output.setSandboxMode(HtmlService.SandboxMode.IFRAME); 

Este es el número 1558 para el comstackdor de Google Caja: visítelo y comience a “votar” y recibir actualizaciones. ¿Has probado las pruebas en Caja Testbed ?

Una alternativa puede ser tener una función del lado del servidor para recuperar la imagen codificada en base64 a través de UrlFetch, decodificarla usando base64Decode , luego guardar el blob como un archivo de imagen y alojarlo desde Google Drive . Espero que esto sea muy lento, desafortunadamente.

Para obtener la cadena base64 codificada en primer lugar desde los archivos de Google Drive:

GS

 var response = UrlFetchApp.fetch('https://googledrive.com/host/fileId/name.png'); var blob = response.getBlob(); var bytes = blob.getBytes(); var base64String = Utilities.base64Encode(bytes); Logger.log(base64String); // now copy and paste into html 

HTML

 img name