I would like to replace some text box text in Google slides with corresponding images. I have tried to following method: How to replace Text with Image on Google Slide using Google Script
It only works on small amounts of data, but I have over 500 object to loop through. I cannot use the Slides API only apps script.
Are there any efficient ways to go about it?
Here is my code so far:
function addFruits() {
//adding search texts
var apple = "Apple";
var orange = "Orange";
var cherry = "Cherry";
var bamboo = "Bamboo";
//addding file ids
var appleID = 'XXXXXXX';
var orangeID = 'XXXXXXXXXXX';
var cherryID = 'XXXXXXXXX';
var bambooID = 'XXXXXXXXXX';
//getting images
var appleIMG = DriveApp.getFileById(appleID).getBlob();
var orangeIMG = DriveApp.getFileById(orangeID).getBlob();
var cherryIMG = DriveApp.getFileById(cherryID).getBlob();
var bambooIMG = DriveApp.getFileById(bambooID).getBlob();
//Logger.log(appleIMG)
//Logger.log(orangeIMG)
//Logger.log(cherryIMG)
//Logger.log(bambooIMG)
// retreive all slides.
var presentation = SlidesApp.openById(slideID);
var slides = presentation.getSlides();
//Logger.log(slides)
//get all shapes and reduce them to a 1d array
var shapesArrays = [];
slides.forEach(slide => {
let shape = slide.getShapes();
shapesArrays.push(shape)
})
var shapes = [].concat.apply([], shapesArrays);
//Logger.log(shapes)
shapes.forEach(s => {
if (s.getText().asString().includes(apple)) {
s.replaceWithImage(appleIMG);
}
else if (s.getText().asString().includes(orange)) {
s.replaceWithImage(orangeIMG);
}
else if (s.getText().asString().includes(cherry)) {
s.replaceWithImage(cherryIMG);
}
else if (s.getText().asString().includes(bamboo)) {
s.replaceWithImage(bambooIMG);
}
});
}