动态下拉选项加载消失html模式对话框

时间:2019-06-26 17:21:53

标签: google-sheets google-apps-script

我的HTML表单具有一个下拉菜单,可使用api请求加载动态选项。我正在使用google HTML服务将google app脚本与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 :(得分:0)

由于

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

因为getClients()显示警报,并且Google Apps脚本不允许同时显示Google表格用户界面警报和模式对话框。