This has been superseded by the add-on version – SlidesMerge add-on, but the below should still works too if you prefer to bake your own simplified version.
This isn’t an add-on yet (although I may get round to making it into one). For now the script has a few parameters you can set up before running it. The purpose is a kind of Mail Merge for Slides. Working with slides is a little more complex than with mail, largely because a slide deck contains multiple slides, so presents many more options.
What can you do
Example
Here’s a template deck. It contains a master slide (not to be duplicated), and some other slides that are repeated for each row in the input data.
And here’s the result after merging
Here’s the data that was used.
Options
In this example I used these options function localTest() {
return {
template: "1Q6K57zLdnL6Vm0gzKuukOLs0npA5BeBw2kO7xEb5Z9E", // the slide template id
sheetId: "1t8IFpVvsas2uOiuT8g21qoeB4qf8IIZDLuC85OVVH1k", // the sheet id
sheetName: "Actors", // the name of the sheet with the variable data
presoFolder: "/Published Scripts/slidemerge/results", // the folder to write the output preso(s) to
presoName: "actors-results", // the base name for the preso(s) created
options: {
type: "single", // multiple , single
suffixHeading: "", // used with multiple, to append to deck name, gets data from sheet row variable
startRow: 1, // where to start
finishRow: 3, // where to finish
masters:[1] // an array of slide positions (starting at 1 to not duplicate)
},
static: {
demoTitle: "slidemerge demo - www.mcpher.com", // any variables here can be substituted in the body of the template
appVersion: "alpha v0.1",
appIcon: "https://storage.googleapis.com/effex-console-static/bundle/src/img/exn64.png"
}
};
}
- Template – the slides template
- sheetId – the id of the sheet containing the data
- sheetName – the name of the sheet containing the data
- presoFolder – the Drive folder to write the merged slides to
- presoName – the name (or the base for the name) of the created slides
- options
- type – can be single (1 deck is created containing all the slides for all rows in the data) or multiple (a deck is created for each row in the data)
- suffixHeading – the name of a column in the data to take the name to append to the presoName when working with type=multiple. This will create presentation files where their names are derived from the data. If blank, and multiple is selected, the row number will be used. Ignore for type=single
- startRow – if specified, where to start from in the data – first row is 1. If not specified it will start at 1.
- finishRow – if specified, where to finish in the data – first row is 1. If not specified, it will go till the end.
- masters – an optional field of slide numbers (starting at 1) , to be considered title slides, and not repeated for each row in the data
- static – these are variables that can appear in the template and will be replaced with the values given on all slides.
Next steps
I’m looking for feedback before I convert this into an add-on. To use, take a copy of here, go to the script called ThisIsTheModYouAreLookingFor and play with the options.
Subpages
- Chord Snip
- Color Arranger
- Debugging Office JavaScript API add-ins
- Dicers
- Dicers Pro and advanced features
- Measuring round trip and execution times from add-ons
- Office Add-ins – first attempt
- Orchestrating competing google and Office framework loads
- Plotting maps with overlays Sheets add-on starter
- Promise implementation for Apps Script Stripe payments
- Repeatable add-on settings layouts and style
- Sheets API – Developer Metadata
- SlidesMerge add-on
- Unpicking the Google Picker
- Watching for changes in an Office add-in
- When test add-ons doesn’t work
- Polyfill for Apps Script properties service for the Office JavaScript API
- Sankey Snip