I am supporting CandidateX

CandidateX is a startup that focuses on creating inclusion-focused hiring solutions, designed to increase access to job opportunities for underestimated talent. Check them out if you have a few minutes to spare. They need visibility!

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

Open Slide merge


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.

Open Template deck

And here’s the result after merging

Open actors-results-demo

Here’s the data that was used.

open Slide merge data


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.