gsinfos

googleslides Infos

Up Front

  • created by Lukas Steinwender.
  • an add-on to add custom information useful for the presenter to an active slideshow.
  • I am a firm believer in open source software. As such, the code is publicly available for inspection and can be found in the presentation containing the add-on. To view the code follow the steps below:
    1. open the presentation in your web browser
    2. navigate to Extensions > Apps Script
    3. There you go, all the code at your disposal!
  • while this documentation contains the necessary things for a user, I do encourage you to have a look at the docstrings in the add-on code (see above)
  • the terms of service can be found here
  • the privacy policy can be found here

Quickstart Guide

Global Configurations

Before using the Add-on you have to specify your global configurations on the first slide of your presentation. There are a few required configurations. These are added by including the following in the speaker notes of the first slide in your presentation:


<GSInfos>
author: <your name>,
title: <title of the presentation>,
duration: <expected duration of the presentation>,
</GSInfos>
					

All currently supported global options can be found in Global options.

Local Configurations

Next, you can add local configurations. These are achieved by including the following on the slide you want to configure:


<GSInfos>
numbering: <mode of slide number>,
footer: <[true/false]>,
</GSInfos>
					

All currently supported local options can be found in Local options.

Adjusting your slides

Now that all the configurations have been made, you can start creating/adding information to your slides. To do so follow these steps:

  1. In the menu tabs navigate to Extensions > GSInfos. You will find a number of functions.
  2. Choose a function to execute by clicking on it. The most commonly used functions are the following:

Configurations

All configurations are made via the speaker notes. That is, you include a <GSInfo></GSInfo> block containing options. The general syntax is as follows:


<GSInfos>
option1: value1,
option2: value2,
#comment (will be ignored)
option3: value3,
...
</GSInfos>
					

Note, that lines starting with hashtag (#), will be ignored!

Options

There are global and local options. The former apply to the entire presentation, the latter to one specific slide. Options are a comma/newline separated list of key: value pairs

Global Options

Global options are only specified on the first slide in your presentation.
Global options are applied across all slides. They determine styling and content of blocks that appear on every slide. See the following for a list (sorted alphabetically) of supported global options:

  • author
    • string, required
    • specifies the author of the presentation
    • will be added as a footer element
  • date
    • string, optional
    • date the presentation is held
    • currently not used
  • duration
    • float, required
    • expected duration of the presentation in minutes
    • used in computing the pacing indicators
  • footeraccencolor
    • string, optional
    • hex-representation of some color
    • color to be used for accents in the footer
    • the default is Accent 5 in the slide's theme
  • footercolor
    • string, optional
    • hex-representation of some color
    • color to be used for the footer
    • the default is Accent 6 of the slide's theme
  • questions
    • float, optional
    • amount of time allocated for questions after the presentation
    • currently not used
  • title
    • string
    • title of the presentation
    • will be added as footer element
      • only if section is not specified
    • new lines in the title are denoted by newline-characters (\n)
      • for example: Title \n over two lines

Local Options

Local options are specified in any slides speaker notes by adding the standard <GSInfos>...</GSInfos> block.

Local options are ONLY applied to the slide of the speaker notes they are located in.
See the following for a list (sorted alphabetically) of supported global options:

  • footer
    • bool, optional
    • whether to
      • show the footer (true)
      • hide the footer (false)
    • a slide with hidden footer will still count towards the slide numbers
      • i.e., if you have 3 unique slides (1,2,3) and on slide 2 you specify footer: false, the the numbers will be 1/3, [hidden], 3/3
    • the default is true
      • footer is shown
  • numbering
    • literal, optional
    • valid options are
      • true
        • slide number will be shown
        • slide will be considered as a unique slide
        • counter will be incremented w.r.t. the last unique slide
      • nonumber
        • no slide number shown
        • slide will NOT count towards total number of slides
        • usually used for
          • title slides
          • section headers
      • previous
        • slide number will be shown
        • slide number will be set to same number as previous unique slide (counter will not be incremented w.r.t. last unique slide)
        • slide will NOT be interpreted as unique slide
        • usually used for
          • slides with animations from one slide to the next, where the slides still show the same content (i.e. for highlighting elements)
    • the default is true
      • slide number counter incremented w.r.t. previous unique slide and slide number shown
  • section
    • string, optional
    • title of the section starting at this slide
    • overrides the global option title
      • will be displayed in footer instead of title
    • any slide following a slide with section specified will show section in the footer until another slide has section specified
      • from there the new section will be used
    • the default is undefined (not provided)
      • will
        • use the last section that was specified
        • use title if no section specified

Config Examples

I provide a few examples for configurations below. If you want more, check out the speaker notes of presentation containing the Add-On

Example for global options mixed with local options (on first slide):


<GSInfos>
#global options
author: The Author,
date: 2025-12-16,
duration: 20,
footercolor: #888888,
footeraccentcolor: #a10000,
questions: 5,
title: Presentation Title\nSubtitle,
#local options
footer: false,
numbering: nonumber,
#this will be ignored,
</GSInfos>
					

Example for just local options (any slide in the presentation):


<GSInfos>
#local options
footer: false,
numbering: nonumber,
section: Two Line\nSection Title
#this will be ignored,
</GSInfos>
					

Empty or absent configuration block will just fall back to default values


<GSInfos>
</GSInfos>
					

Functions

Below is a list of the currently implemented functions (ordered alphabetically).

  • Add Element > Author (footer)
    • adds a text-box containing the author to the footer
    • ignored if footer:false
  • Add Element > Section (footer)
    • adds text-box containing section title to the footer
    • will use
      • last specified section
      • title if section not specified
  • Add Element > Slide numbers (footer)
    • adds a text-box containing the current slide's slide-number
    • slide numbers are determined as follows
      • if nothing specified in numbering, the previous unique slide's number is incremented by 1
      • if numbering: previous, the slide number will set to the same as the previous unique slide's slide number. The slide will NOT contribute to the total number of unique slides.
      • if numbering:nonumber, the slide will not contain a slide number. The slide will not contribute to the total number of unique slides.
    • if you want the slide to still contribute to the total slide numbers while not showing a slide-number, pass footer:false instead of numbering:nonumber
  • Add Element > Separator (footer)
    • adds a visual separator to separate footer from the rest of the slide
    • currently the separator is implemented as ___.___
  • Add Element > Pace indicators (speaker notes)
    • adds pace indicators to the top of the speaker notes of every slide
    • pace indicators are computed by duration/total_slides * slide_number
      • this assumes constant pace per slide
    • pace indicators are indicating how far into the presentation you should be, when finishing some slide
  • Add footer
    • adds all footer elements
    • convenience function calling all Add Element > ... (footer) functions
  • Remove Element > Author (footer)
    • removes the author-text-box from the footer
    • works by parsing the text-box' Alt Text
  • Remove Element > Section (footer)
    • removes the section-text-box from the footer
    • works by parsing the text-box' Alt Text
  • Remove Element > Slide numbers (footer)
    • removes the slide number-text-box from the footer
    • works by parsing the text-box' Alt Text
  • Remove Element > Separator (footer)
    • removes the footer-separator from the footer
    • works by parsing the shape's Alt Text
  • Remove Element > Pace indicators (speaker notes)
    • removes pace indicators from the speaker notes
    • works by parsing for text matching the RegEx <dt: \d+:\d+:\d+\/\d+:\d+:\d+>
  • Remove footer
    • removes all footer elements
    • convenience function calling all Remove Element > ... (footer) functions
  • Update pace indicators
    • updates pace indicators to latests state of configurations/presentation length
    • does so by calling
      1. Remove Element > Pace indicators (speaker notes) (delete pace indicators)
      2. Add Element > Pace indicators (speaker notes) (recompute pace indicators)
    • convenience function
  • Help
    • function pointing to resources for help

For developers

In case you want to dive deeper into google Apps-Script or need help in understanding my source code, I recommend checking out the documentation.

Naming conventions

  • element creation/removal functions
    • addElementName()
    • removeElementName()
  • GSI descriptors (descriptors to query elements added by gsinfos)
    • stored in Shape.getDescription() (Alt Text)
    • follow pattern GSInfos.<ElementName>.<SubName>
      • <ElementName> is EQUIVALENT to creation function name
      • <ElementName> is in PascalCase