Динамическая выпадающая опция загрузки исчезает, HTML модальный диалог - PullRequest
0 голосов
/ 26 июня 2019

В моей HTML-форме есть выпадающий список, который загружает динамические параметры с помощью API-запроса.Я использую Google HTML Service, чтобы связать скрипт приложения Google с HTML-файлом.Моя проблема в том, что мой модальный диалог исчезает, как только он появляется.

======== Скрипт ========

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Call API')
      .addItem('Display results','html')
      .addToUi();
}

function html(){
  var html = HtmlService.createTemplateFromFile('load');
  SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
      .showModalDialog(html, 'Input API Creddentials');

}

function getClients() {
  var response = UrlFetchApp.fetch("http://myurl does here");
   var fact = JSON.parse(response.getContentText());
  var optionsHTML = [];
  for (var i = 0; i < fact.length-1;i+=1) {
   optionsHTML.push(fact[i].clientId.client);
  }
  SpreadsheetApp.getUi().alert(optionsHTML);
  return optionsHTML;
 }

======= Файл HTML ====

    <!DOCTYPE html>
    <html>
     <head>
       <base target="_top">
     </head>
     <body>
       <form >
  <div>
  <select id="optionList" name="optionList">
    <option>Loading...</option>    
  </select>

  </div> 
  Username:
  <input type="text" name="username"> <br />
  Password:
  <input type="password" name="password"> <br />
  <input type="button" value="OK" onclick="google.script.run.callNumbers(this.parentNode);google.script.host.editor.focus();" />
</form>
  </body>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js">
</script>
<script>
    // The code in this function runs when the page is loaded.
    $(function () {
        google.script.run.withSuccessHandler(buildOptionList)
            .getClients();
    });

    function buildOptionList(clients) {
        var list = $('#optionList');
        list.empty();
        for (var i = 0; i < clients.length; i++) {
            list.append(new Option(clients[i]));
        }
    }
</script>

</html>

1 Ответ

0 голосов
/ 26 июня 2019

Проблема возникает из-за

// The code in this function runs when the page is loaded.
$(function () {
    google.script.run.withSuccessHandler(buildOptionList)
        .getClients();
});

, поскольку getClients() показывает предупреждение, а скрипт Служб Google не позволяет одновременно отображать предупреждение и модальный диалог пользовательского интерфейса Google Sheets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...