繁体   English   中英

Google表格应用脚本HTML的onload无法正常工作

[英]Google Sheets App Script Html onload not working

我正在使用Google工作表,并且正在创建一个文档,该文档可以吸引不在办公室的员工。 我有一个菜单选项来删除员工数据,它打开了我有HTML表单( 项目的图像 )的侧边栏。 我正在尝试使其生成列表中当前雇员的下拉列表。

我已经开发了用于提取所需数据的代码:

function removeAnyone() {
  var html = HtmlService.createHtmlOutputFromFile('RemoveAnyone');
  SpreadsheetApp.getUi()
    .showSidebar(html);
}

function getList() {
  var headerRows = 1;
  var sheet = SpreadsheetApp.getActive().getSheetByName("Data");
  var range = sheet.getRange(headerRows + 1, 1, sheet.getMaxRows() - headerRows, 1);
  var arrayValues = range.getValues();
  return arrayValues;
}

现在我们移到我的html,在这里我只是尝试使用标题中的for循环来加载下拉列表:

<!DOCTYPE html>
<html>

<head>
  <base target="_top">
  <script>
    function addOption_list() {

     document.getElementById("output").innerHTML = "test";

    var options = google.script.run.getList();

    for (var i = 0; i < options.length; ++i;) {
      var optn = document.createElement("OPTION");
      optn.text = options[i];
      optn.value = options[i];
      document.myForm.selectEmployee.options.add(optn);

      }
    }
  </script>
</head>

<body onload="addOption_list()">
  <form id="myForm" onsubmit="submitForm(this)">
    <select id="selectEmployee">
      <option>Choose an employee</option>
     </select>
  </form>
  <div id="output"></div>
</body>

</html>

我在主体中添加了一个div,并让函数在开始时将值更改为“ test”,这只是检查并查看该函数是否甚至被调用,看起来好像不是。

我也尝试使用window.onload(如下所示),但是那也没让我到任何地方。

window.onload = function {

     document.getElementById("output").innerHTML = "test";

    var options = google.script.run.getList();

    for (var i = 0; i < options.length; ++i;) {
      var optn = document.createElement("OPTION");
      optn.text = options[i];
      optn.value = options[i];
      document.myForm.selectEmployee.options.add(optn);

      }
    }

您能给我的任何指导将不胜感激!

google.script.run不返回值。 如果要从GAS返回值,请使用withSuccessHandler 并且getValues()检索的数据是二维数组。 那么如何修改呢?

修改后的脚本:

<!DOCTYPE html>
<html>

<head>
  <base target="_top">
  <script>
    window.onload = function() {
      google.script.run.withSuccessHandler(addOption_list).getList();
    }
    function addOption_list(options) {
      document.getElementById("output").innerHTML = "test";
      var select = document.getElementById('selectEmployee');
      for ( var i in options) {
        var optn = document.createElement('option');
        optn.value = options[i][0];
        optn.text = options[i][0];
        select.appendChild(optn);
      }
    }
  </script>
</head>

<body>
  <form id="myForm" onsubmit="submitForm(this)">
    <select id="selectEmployee">
      <option>Choose an employee</option>
     </select>
  </form>
  <div id="output"></div>
</body>

</html>

参考:

如果我误解了您的问题,对不起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM