¿Cómo puedo subir una imagen de Google Sheets a Google Slides?
Como sugiere el título, actualmente tengo códigos que toman una captura de pantalla de un sitio web y la colocan en mis Hojas de Google. Mi pregunta es cómo transferir esa imagen a la presentación. La imagen puede cambiar, así que sería mejor si se puede cambiar de manera dinámica. Vi la clase ReplaceAllShapesWithImageRequest
, pero no había muchos ejemplos y usaban URL en lugar de celda de Google Sheets. ¡Gracias por la ayuda!
Editar
Además, puede haber más imágenes (aproximadamente 9), y actualmente hay marcadores de posición en las diapositivas, pero ¿cómo puedo seleccionar diapositivas específicas para imágenes específicas para que se ajusten algo así como esto?
aquí
Donde los números 01-08 serán las imágenes.
Gracias por la ayuda.
Editar 2
El siguiente es el código para tomar la captura de pantalla
function snapScreenshot() {
//especificar dónde quiero que esté la imagen
var row = 11;
var col = 2;
var siteUrl = sheet.getRange(row, col).getValue()
var url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=" + encodeURIComponent(siteUrl) + "&key=" + pageSpeedApiKey;
var res = UrlFetchApp.fetch(url).getContentText()
var obj = JSON.parse(res);
var imgData = obj.lighthouseResult.audits['final-screenshot'].details.data;
var strImage = imgData.replace(/^data:image/[a-z]+;base64,/, "")
var blob = Utilities.newBlob(Utilities.base64Decode(strImage), "image/jpeg", "sample.jpeg");
sheet.insertImage(blob, 1, 29);
for (var i=0; i< obj.lighthouseResult.audits["screenshot-thumbnails"].details.items.length; i++) {
var imgData = obj.lighthouseResult.audits["screenshot-thumbnails"].details.items[i].data;
var strImage = imgData.replace(/^data:image/[a-z]+;base64,/, "")
var blob = Utilities.newBlob(Utilities.base64Decode(strImage), "image/jpeg", "sample.jpeg");
sheet.insertImage(blob, 1, 20+(i*6))
}
}
davy.ai
Para transferir la captura de pantalla desde tu Google Sheets a una presentación de Google Slides, puedes seguir los siguientes pasos:
snapScreenshot()
, ya has insertado una imagen en tu Google Sheets usandosheet.insertImage()
. Para obtener esta imagen, puedes utilizar el métodogetBlob()
en el rango de celdas donde insertaste la imagen. Por ejemplo, si has insertado la imagen en la celda A1, puedes obtenerla usandosheet.getRange(1, 1).getBlob()
.Abre la presentación de Google Slides: Puedes utilizar el método
openById()
enSlidesApp
para abrir la presentación. Por ejemplo, si la ID de tu presentación es1234567890abcdefg
, puedes abrirla usandoSlidesApp.openById('1234567890abcdefg')
.Localiza la diapositiva donde insertar la imagen: Mencionaste que tienes marcadores de posición en tus diapositivas para cada imagen. Puedes utilizar el método
getPageElements()
en el objetoSlide
para obtener todas las formas en la diapositiva, y luego buscar la forma del marcador de posición por suobjectId
, el cual puedes encontrar en el editor de diapositivas seleccionando la forma y buscando suobjectId
en el panel de Propiedades.Reemplaza la forma del marcador de posición con la imagen: Una vez que hayas encontrado la forma del marcador de posición, puedes reemplazarla con la imagen utilizando el método
replaceAllShapesWithImage()
en el objetoPresentation
. Este método toma un objetoReplaceAllShapesWithImageRequest
como entrada, el cual puedes construir de la siguiente manera:Aquí,
blob
es el objetoBlob
que representa la imagen de la captura de pantalla que obtuviste de Google Sheets utilizando el métodogetBlob()
.ReplaceAllShapesWithImageRequest
, puedes aplicar los cambios a la presentación utilizando el métodobatchUpdate()
en el objetoPresentation
. Puedes utilizar el siguiente código para aplicar los cambios a la diapositiva con la ID especificada:Aquí,
presentationId
es la ID de tu presentación de Google Slides, yslideId
es la ID de la diapositiva que deseas modificar.Para aplicar este proceso a varias imágenes y diapositivas, puedes modificar el código para recorrer las capturas de pantalla y las IDs de las diapositivas, y construir un nuevo objeto
ReplaceAllShapesWithImageRequest
para cada combinación de imagen y diapositiva.