Добавить Show Dialog custom html в скрипт Google Slides - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь сделать это диалоговое окно всплывающим на время выполнения функции AddConclusionSlide, но получаю исключение: «TypeError: Не удается найти функцию show в объекте Presentation». Есть ли альтернатива «показать» для скрипта Google Slides (это прекрасно работает в Google Docs)?

function AddConclusionSlide() {
htmlApp("","");

  var srcId = "1Ar9GnT8xPI3ZYum9uko_2yTm9LOp7YX3mzLCn3hDjuc";
  var srcPage = 6;
  var srcSlide = SlidesApp.openById(srcId);
  var dstSlide = SlidesApp.getActivePresentation();
  var copySlide = srcSlide.getSlides()[srcPage - 1];
  dstSlide.appendSlide(copySlide);

Utilities.sleep(3000); // change this value to show the "Running script, please wait.." HTML window for longer time.
htmlApp("Finished!",""); 
Utilities.sleep(3000);  // change this value to show the "Finished! This window will close automatically. HTML window for longer time.
htmlApp("","close"); // Automatically closes the HTML window.
}

 function htmlApp (status,close) {
     var ss = SlidesApp.getActivePresentation();
     var htmlApp = HtmlService.createTemplateFromFile("html");     
      htmlApp.data = status;
      htmlApp.close = close;
      ss.show(htmlApp.evaluate()
     .setWidth(300)
     .setHeight(200));
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
  <style>
  img {
  display: block;
  margin-left: auto;
  margin-right: auto;
  width: 25%;
}
    .gap-10 {
      width: 100%;
      height: 20px;
    }

    .gap-20 {
      width: 100%;
      height: 40px;
    }

    .gap-30 {
      width: 100%;
      height: 60px;
    }
  </style>
</head>
<body>
   <div class="container">
<div>
        <p align="justify" style="font-family:helvetica,garamond,serif;font-size:12px;font-style:regular;" class="light">
        Function is running... This could take a while. It's a lot of data...</p>   
        </div>
<p id="status">(innerHTML).</p>
<div id="imageico"></div>
<script>
var imageContainer = document.getElementById("imageico");
if (<?= data ?> != "Finished!"){
document.getElementById("status").innerHTML = "";
} else {
document.getElementById("status").innerHTML = "";
}     
if (<?= close ?> == "close"){
google.script.host.close();
}
</script>
</body>
</html>

1 Ответ

2 голосов
/ 28 января 2020

В отличие от Spreadsheet объекта, Slide объект не имеет show метода. Итак, класс ui необходимо использовать:

SlidesApp.getUi().showModalDialog(htmlApp.evaluate()
 .setWidth(300)
 .setHeight(200), "My App")
...