Skip to content Skip to sidebar Skip to footer

Copying Multiple Slides From A Master Slide Desk Using Google Apps Script

I have created a code which replaces placeholders on google slides. The starting point of this project is a google form. Once the google form has been submitted - then the relevant

Solution 1:

  • You want to copy the 5, 7, and 9 pages (indexes of 4, 6 and 8) in the master Google Slides to other Google Slides.
  • You want to achieve this using Google Apps Script.

I could understand like above. If my understanding is correct, how about this answer? Please think of this as just one of several possible answers.

Flow:

  1. Retrieve all slides from the master Google Slides.
  2. Copy the required slide to the destination Google Slides in the loop.

Pattern 1:

Sample script:

Before you run the script, please set the variables.

functionmyFunction() {
  var copyPageNumbers = [5, 7, 9];  // Please set the page number. This is not the index. So the 1st page is 1.var masterGoogleSlidesId = "###";  // Please set the master Google Slides ID.var destinationGoogleSlidesId = "###";  // Please set the destination Google Slides ID.var offset = 1;

  var src = SlidesApp.openById(masterGoogleSlidesId);
  var dst = SlidesApp.openById(destinationGoogleSlidesId);
  var slides = src.getSlides();
  var page = 0;
  slides.forEach(function(slide, i) {
    if (copyPageNumbers.indexOf(i + 1) != -1) {
      dst.insertSlide(offset + page, slide);
      page++;
    }
  });
}

Pattern 2:

Sample script:

functionmyFunction() {
  var copyPageNumbers = [5, 7, 9];  // Please set the page number. This is not the index. So the 1st page is 1.var masterGoogleSlidesId = "###";  // Please set the master Google Slides ID.var destinationGoogleSlidesId = "###";  // Please set the destination Google Slides ID.var offset = 1;

  var src = SlidesApp.openById(masterGoogleSlidesId);
  var dst = SlidesApp.openById(destinationGoogleSlidesId);
  var slides = src.getSlides();
  copyPageNumbers.forEach(function(p, i) {
    dst.insertSlide(offset + i, slides[p - 1]);
  });
}

Note:

  • In both patterns, the pages of 5, 7 and 9 of the master Google Slides are copied from 2nd page in the destination Google Slides.
    • When var offset = 0 is used, the pages of 5, 7 and 9 of the master Google Slides are copied from 1st page in the destination Google Slides.

Reference:

Solution 2:

Thanks, @Tanaike, for the solutions!

With your code as a base, I was able to build a script to add slides to multiple slide decks in a single folder. I wanted to share for those who may need it. Code below...

function copySlides() {
  // Array of slide numbers to grab [1, 2, 3,...]varcopyPageNumbers= [1];  // Please set the page number. This is not the index. So the 1st page is 1.// Which deck contains the slides to copyvarmasterGoogleSlidesId='###';  // Please set the master Google Slides ID.// Folder containing Slides to copy tovarfolderID='###';
  varfolderToCopyTo= DriveApp.getFolderById(folderID);

  // Slide files in foldervarslidesInFolder= folderToCopyTo.getFilesByType(MimeType.GOOGLE_SLIDES);

  varcounter=0;
  vartotal=0;

  while (slidesInFolder.hasNext()) {

    varfile= slidesInFolder.next();

    vardestinationGoogleSlidesId= file.getId();  // Please set the destination Google Slides ID.varoffset=0;

    try {
      varsrc= SlidesApp.openById(masterGoogleSlidesId);
      vardst= SlidesApp.openById(destinationGoogleSlidesId);
      varslides= src.getSlides();
       copyPageNumbers.forEach(function (p, i) {
         dst.insertSlide(offset + i, slides[p - 1]);
       });
      counter++;
    }
    catch (e) {
      console.log(destinationGoogleSlidesId);
      console.log(e);
    }

    total++;

  }

  console.log(counter + ' of ' + total + ' Slide Decks Updated');

}

Post a Comment for "Copying Multiple Slides From A Master Slide Desk Using Google Apps Script"