Estoy tratando de insertar imágenes tiff (y otros formatos no compatibles, por ejemplo, bmps) en las diapositivas de Google desde la unidad usando los scripts de Google. Estoy usando el siguiente código:
imageID = ''; slideID = ''; function insertImageFromDrive() { var image = DriveApp.getFileById(imageID); var presentation = SlidesApp.openById(slideID); presentation.getSlides()[0].insertImage(image); }pero recibo el error 'Excepción: la imagen que está tratando de usar no es válida o está dañada'. de 'insertarImagen'.
¿Hay alguna solución u otro método para esto?
Gracias.
Como se indica en la documentación de .insertImage() :
Al insertar la imagen, se obtiene una vez de BlobSource y se almacena una copia para mostrarla dentro de la presentación. Las imágenes deben tener un tamaño inferior a 50 MB, no pueden exceder los 25 megapíxeles y deben estar en formato PNG, JPEG o GIF.
Por lo tanto, TIFF y BMP no se admiten directamente. Sin embargo, podemos convertir entre algunos tipos de imágenes usando File.getAs() , que intentará convertir un formato de archivo. Como está documentado :
Para imágenes en formato BMP, GIF, JPEG o PNG, cualquiera de 'image/bmp', 'image/gif', 'image/jpeg' o 'image/png' también son válidos.
Así que intente cambiar la línea en cuestión a
var image = DriveApp.getFileById(imageID).getAs('image/jpeg');Esto debería funcionar para BMP, pero probablemente no funcione para TIFF. En el caso de los TIFF, es posible que deba utilizar alguna herramienta de conversión de terceros.
Creo que su objetivo es el siguiente.
Desafortunadamente, en la etapa actual, estos archivos de imagen no se pueden colocar directamente en Google Slides. En este caso, se requiere convertirlos a otro formato que se pueda poner en las Presentaciones de Google. En esta respuesta, me gustaría presentar este método.
Este script utiliza la API de Drive. Entonces, cuando use este script, habilite Drive API en los servicios avanzados de Google .
var imageID = "###" // Please set the file ID of the image file. var imageUrl = Drive.Files.get(imageID).thumbnailLink.replace(/\=s\d+/, "=s1000"); var presentation = SlidesApp.openById(slideID); presentation.getSlides()[0].insertImage(imageUrl);y también, puede usar el siguiente script.
var imageID = "###" // Please set the file ID of the image file. var imageUrl = Drive.Files.get(imageID).thumbnailLink.replace(/\=s\d+/, "=s1000"); var image = UrlFetchApp.fetch(imageUrl).getBlob(); var presentation = SlidesApp.openById(slideID); presentation.getSlides()[0].insertImage(image);thumbnailLink modificando el parámetro de consulta, las imágenes de varios mimeTypes se pueden convertir a formato PNG. Este método utiliza esta situación.