es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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))
  }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para transferir la captura de pantalla desde tu Google Sheets a una presentación de Google Slides, puedes seguir los siguientes pasos:

    1. Obtén la imagen desde Google Sheets: En tu función snapScreenshot(), ya has insertado una imagen en tu Google Sheets usando sheet.insertImage(). Para obtener esta imagen, puedes utilizar el método getBlob() en el rango de celdas donde insertaste la imagen. Por ejemplo, si has insertado la imagen en la celda A1, puedes obtenerla usando sheet.getRange(1, 1).getBlob().
    2. Abre la presentación de Google Slides: Puedes utilizar el método openById() en SlidesApp para abrir la presentación. Por ejemplo, si la ID de tu presentación es 1234567890abcdefg, puedes abrirla usando SlidesApp.openById('1234567890abcdefg').

    3. 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 objeto Slide para obtener todas las formas en la diapositiva, y luego buscar la forma del marcador de posición por su objectId, el cual puedes encontrar en el editor de diapositivas seleccionando la forma y buscando su objectId en el panel de Propiedades.

    4. 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 objeto Presentation. Este método toma un objeto ReplaceAllShapesWithImageRequest como entrada, el cual puedes construir de la siguiente manera:

    var request = {
      replaceMethod: 'CENTER_INSIDE',
      containsText: { text: '{{placeholder}}' },  // Reemplaza con el texto en tu forma de marcador de posición
      imageReplaceMethod: { 
        imageProperties: {
          contentUrl: blob.getUrl(),
          sourceUrl: blob.getUrl()
        }
      }
    };
    

    Aquí, blob es el objeto Blob que representa la imagen de la captura de pantalla que obtuviste de Google Sheets utilizando el método getBlob().

    1. Aplica los cambios: Después de construir el objeto ReplaceAllShapesWithImageRequest, puedes aplicar los cambios a la presentación utilizando el método batchUpdate() en el objeto Presentation. Puedes utilizar el siguiente código para aplicar los cambios a la diapositiva con la ID especificada:
    var slideId = '1234abcd';  // Reemplaza con la ID de la diapositiva a modificar
    var requests = [ {replaceAllShapesWithImage: request} ];
    Slides.Presentations.batchUpdate({ requests: requests }, presentationId).execute();
    

    Aquí, presentationId es la ID de tu presentación de Google Slides, y slideId 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.

Comments are closed.