Created
November 5, 2019 21:22
-
-
Save jpigree/e248145b5626240d86002d907c012d84 to your computer and use it in GitHub Desktop.
Google Slides blue slidebar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @OnlyCurrentDoc Adds progress bars to a presentation. | |
*/ | |
var BAR_ID = 'PROGRESS_BAR_ID'; | |
var BAR_HEIGHT = 5; // px | |
var presentation = SlidesApp.getActivePresentation(); | |
/** | |
* Runs when the add-on is installed. | |
* @param {object} e The event parameter for a simple onInstall trigger. To | |
* determine which authorization mode (ScriptApp.AuthMode) the trigger is | |
* running in, inspect e.authMode. (In practice, onInstall triggers always | |
* run in AuthMode.FULL, but onOpen triggers may be AuthMode.LIMITED or | |
* AuthMode.NONE.) | |
*/ | |
function onInstall(e) { | |
onOpen(); | |
} | |
/** | |
* Trigger for opening a presentation. | |
* @param {object} e The onOpen event. | |
*/ | |
function onOpen(e) { | |
SlidesApp.getUi().createAddonMenu() | |
.addItem('Show progress bar', 'createBars') | |
.addItem('Hide progress bar', 'deleteBars') | |
.addToUi(); | |
} | |
/** | |
* Create a rectangle on every slide with different bar widths. | |
*/ | |
function createBars() { | |
deleteBars(); // Delete any existing progress bars | |
var slides = presentation.getSlides(); | |
for (var i = 0; i < slides.length; ++i) { | |
var ratioComplete = (i / (slides.length - 1)); | |
var x = 0; | |
var y = presentation.getPageHeight() - BAR_HEIGHT; | |
var barWidth = presentation.getPageWidth() * ratioComplete; | |
if (barWidth > 0) { | |
var bar = slides[i].insertShape(SlidesApp.ShapeType.RECTANGLE, x, y, | |
barWidth, BAR_HEIGHT); | |
bar.getFill().setSolidFill(77, 121, 255); | |
bar.getBorder().setTransparent(); | |
bar.setLinkUrl(BAR_ID); | |
} | |
} | |
} | |
/** | |
* Deletes all progress bar rectangles. | |
*/ | |
function deleteBars() { | |
var slides = presentation.getSlides(); | |
for (var i = 0; i < slides.length; ++i) { | |
var elements = slides[i].getPageElements(); | |
for (var j = 0; j < elements.length; ++j) { | |
var el = elements[j]; | |
if (el.getPageElementType() === SlidesApp.PageElementType.SHAPE && | |
el.asShape().getLink() && | |
el.asShape().getLink().getUrl() === BAR_ID) { | |
el.remove(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment