I am trying to copy slides from a source presentation and append them to the end of the destination presentation. I have searched solutions on SO but they use the google app
Unfortunately, in the current stage, there are no methods for directly copying a slide (It's like the method of copyTo of Sheets API.) to other Google Slides, yet. So in order to copy a slide to other Slides, I think that there are 2 workarounds.
I recommend the latter, because I think that the former will be the complicated script. So I would like to propose a sample script for the latter workaround.
When you use this script, please do the following flow.
https://script.google.com/macros/s/#####/exec
.By this flow, the Web Apps was deployed as own API. In this sample, "Anyone, even anonymous" for "Who has access to the app:" was used as a test. If you want to use the access token, please modify this. You can see the detail information at below "References".
function doGet(e) {
var srcId = e.parameters.srcId;
var dstId = e.parameters.dstId;
var srcPage = e.parameters.srcPage;
var srcSlide = SlidesApp.openById(srcId);
var dstSlide = SlidesApp.openById(dstId);
var copySlide = srcSlide.getSlides()[srcPage - 1];
dstSlide.appendSlide(copySlide);
return ContentService.createTextOutput("Done.");
}
After Web Apps was deployed, you can use the Web Apps as own API. The sample curl for requesting to the deployed Web Apps is as follows.
Before you use this, please set the source and destination file ID of Slides. When you want to copy the 1st page of the source Slides, please set 1
to srcPage
. And also please set the endpoint which was retrieved above.
curl -GL \
-d "srcId=### fileId of source Slides ###" \
-d "dstId=### fileId of destination Slides ###" \
-d "srcPage=1" \
"https://script.google.com/macros/s/#####/exec"
When this command is run, Done.
is returned. At that time, you can see the appended slide to the last page in the destination Slides.