Search code examples
javascriptgoogle-apps-scriptgoogle-slides-apigoogle-slides

How to call a function via a link/button on a Google Slide?


I want to be able to send a formatted email by clicking a link/button on a Google Slide. An example scenario would be sending a feedback form to all staff after a meeting, with the link on the very last slide.

I already have the code for the email in Google Script and it works perfectly fine when I run it (I also have an HTML file for the format), but I cannot find a way to run it via a link/button on a slide.

I would rather not run it every time the slide is open, only when a special link/button is clicked. Is there a way in Google Script where I can do this in Slides? Any help, method, suggestion is greatly appreciated!

Edit: The sidebar solution works for me! Can't believe I didn't think of it before but thank you very much!


Solution

  • I haven't done anything with slides for a while but I just built this using a simple side bar interface.

    function myFunction() {
      var ss=SlidesApp.getActivePresentation();
      var slides=ss.getSlides();
      var html='<input type="button" value="Run Server Side Function" onClick="clickMe();" />';
      html+='<script>function clickMe(){google.script.run.withSuccessHandler(function (time) { alert("You clicked me at " + time + ".");}).getSomeData();}</script>';
      var userInterface=HtmlService.createHtmlOutput(html);
      SlidesApp.getUi().showSidebar(userInterface);
    }
    
    
    function getSomeData() {
      return Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "HH:mm:ss")
    }
    

    Of course, it's a bit easier to write more complex code using an html file but this was just a quick little demo script.

    Here's what my little sidebar and button look like:

    enter image description here

    Apparently, the side bar does not show up during the presentation. Oh well, sorry to bother you.