google sheet生成的html表单没有“排队”

时间:2017-11-15 16:31:06

标签: google-apps-script google-sheets

如何将来自多个Google工作表(在一个Google工作表中)的动态内容转换为相同的html表单?

在下面的代码中,我从主工作表中动态创建html表单。我想从补充表中添加表单选择。我无法将form.select作为一个html表单的一部分。

编辑:(1)更新了var html以包含每行的div。 (2)将表单和表格html直接移动到html页面。表单值仍未正确排列。我应该使用HTML模板吗?

  <head>
  <script type="text/javascript">  
    function setPageValues () {
      //this is working as intended
      google.script.run.withSuccessHandler(displayForm).getValuesFromSS(); 
      }
   
    function displayForm (values) {   
      var colsUsed = [4,5,0,13,15,16,17,18];        //sheet cols for form
      var html = "<form><table border=0 width=90%>"; //start the form
     
     //HERE IS THE ISSUE: gets range no problem, but html form is wrong.
     //setting return value "html +=" doesn't work!
google.script.run.withSuccessHandler(displayPick).getValuesForRngName('CategoryRole');
   
     //make the rest of the table (this all works fine)
      for (var j = 0; j < colsUsed.length; j++){
          colUsed = colsUsed[j]
          html += "<div id=row><tr><th align=right>" + values[0][colUsed] + ":*&nbsp;</th>";
          html += "<td><input></input type=text></td></tr></div>";
      }
      
      //close out the table and set the value (this all works fine)
      html += "<tr><td></td><td><input type=submit></td></tr></form></table>";
      html += "<i>* required form data.</i>";
      document.getElementById("forminfo").innerHTML = html;
    }  

  //building the pick list works just fine. results not correct in html
  //tried to "return html;" but this didn't work!
  function displayPick (values) {
    var rows = 10000;
    var catUsed = "34-31 21: Supplier";

    //find limit of column values
    for (var i = 0; i < rows; i++) {
      if (values[i] == '') { 
        var rows = i;
        break;
       } 
    }
    
    //build the select field description, and set selected option
    html = "<div id=row><tr><th align=right>" + values[0] + ":*&nbsp;</th><td><select>";
    for (var i = 1; i < rows; i++) {
      if (values[i] == catUsed) {
        html += "<option selected>" + values[i] + "<option>";
      } else {
        html += "<option>" + values[i] + "<option>";
      }
    }
    html += "</select></td></tr></div>";
    document.getElementById("formpick").innerHTML = html;
  }
  </script>
</head>

<body onload="setPageValues()">
  <form><table border=0 width=90%>
    <div id="formpick"></div>
    <div id="forminfo"></div>
  </table></form>
</body>

1 个答案:

答案 0 :(得分:0)

在您的项目中放置一个函数,用&#34; openById&#34;;打开其他电子表格。然后使用google.script.run.withSuccessHandler(functionName)将数据返回到表单;