Create a copy of a Google Slides presentation using Apps Script
If you create lots of presentations in Google Slides, it can be useful to create a template that you can quickly copy and edit versus starting from scratch each time.
In this tutorial, I'll show you two ways to create a copy of a Google Slides presentation using Apps Script. AppsScript provides APIs (Application Programming Interfaces) to work with various Google Workspace products such as Drive, Docs, Sheets and Slides. We'll be using the API for Drive and the one for Slides in this tutorial.
Prerequisites
This tutorial assumes that you're familiar with:
Method 1: Using DriveApp to create a copy of the Google Slides presentation
Creating a copy of a Google Slides presentation using DriveApp
is straightforward. All we need is the Id of the Google Slides presentation. Once we have this Id, you get the file, make a copy and then rename it. That's it!
Note
Remember to replace <SLIDES_ID>
in the code with the actual Id of your Google Slides presentation. You can get the Id from the URL of the presentation.
https://docs.google.com/presentation/d/<SLIDES_ID>/edit
function createCopyUsingDriveApp() {
// The Id of the presentation to copy
var templateId = "<SLIDES_ID>";
// Create a copy of the presentation using DriveApp
var template = DriveApp.getFileById(templateId);
var fileName = template.getName();
var copy = template.makeCopy();
copy.setName("Copy of " + fileName);
}
Method 2: Using SlidesApp to create a copy of the Google Slides presentation
Creating a copy of a Google Slides presentation using SlidesApp
is a lot more involved. This is because the SlidesApp
API doesn't have a convenient makeCopy()
method to create a copy.
Therefore, we need to create a new presentation first, delete the default slides in it and then recreate slides from the original presentation in the new one. This is similar to manually copy pasting each object from one presentation to another. This is tedious when done manually but happens within seconds when automated using Apps Script.
Note
Remember to replace <SLIDES_ID>
in the code with the actual Id of your Google Slides presentation. You can get the Id from the URL of the presentation.
https://docs.google.com/presentation/d/<SLIDES_ID>/edit
function createCopyUsingSlidesApp() {
// The Id of the presentation to copy
var templateId = "<SLIDES_ID>";
// Access the template presentation
var template = SlidesApp.openById(templateId);
var fileName = template.getName();
var templateSlides = template.getSlides();
// Create a new presentation first
// (note: SlidesApp does not support a way to create a copy)
var newDeck = SlidesApp.create("Copy of " + fileName);
// Remove default slides
var defaultSlides = newDeck.getSlides();
defaultSlides.forEach(function(slide) {
slide.remove();
});
// Insert slides from template
var index = 0;
templateSlides.forEach(function(slide) {
var newSlide = newDeck.insertSlide(index);
var elements = slide.getPageElements();
elements.forEach(function(element) {
newSlide.insertPageElement(element);
});
index++;
});
}
Which method should you use?
Using DriveApp
to create the copy is a lot simpler. However, the primary disadvantage is that this method requires the user to give the script access to modify and access all of their files in Google Drive. Even the SlidesApp
API requires access to all the presentations in Google Drive but at least the access is scoped to just presentations. Ideally, Google will provide some mechanism to provision access to just a few specific files in Drive. However, if you write the Apps Script, it should be fine to give access because you should know what your script does with your own data.
Conclusion
In this tutorial, I showed you how to create a copy of a Google Slides presentation using Apps Script.