【问题标题】:Dropdown list not showing, Bootstrap and Google apps scripts, Dropdown populates from spreadsheet下拉列表未显示,Bootstrap 和 Google 应用程序脚本,下拉列表从电子表格中填充
【发布时间】:2021-06-11 03:16:52
【问题描述】:

我已经尝试了几个小时来完成这项工作,似乎一切都井井有条,但我无法让它工作

希望,也许有人能指出我正确的方向,你觉得这段代码有什么问题吗?

相关部分是第一个文件的最后一个函数

对于第二个文件,都在表单组件之后

我很绝望:(

这是我正在使用的代码

代码.gs

  function doGet(){
  return HtmlService.createHtmlOutputFromFile("Webappboot");                                                                 //Name of the HTML file
  }

  function AddRecord(input1, input2, input3, input4, input5, input6, input7) {                                               //Names of the componentsIDs
    
    var ss= SpreadsheetApp.openById("1JJrWaeiDUC7TKFo3zjG3MHWJ90OnU6N3AiEh-9cXdaE");                                         //Paste Google Sheet ID
    var webAppSheet = ss.getSheetByName("TrainingLogData");                                                                  //Paste Data Sheet Name
    var lastRow = webAppSheet.getLastRow();


    webAppSheet.insertRows(2, 1);//shift all rows down by one from row 2
    
    webAppSheet.getRange(2,1).setValue(lastRow);                                                  //Entry ID
    webAppSheet.getRange(2,2).setValue(input1);                                                   // Date
    webAppSheet.getRange(2,3).setFormula('="Wk - " & WEEKNUM(B2) & " - " & YEAR(B2)');            // Week # and Year Formula: ="Wk - " & WEEKNUM(B2) & " - " & YEAR(B2)
    webAppSheet.getRange(2,4).setValue(input2);                                                   //Exercise
    webAppSheet.getRange(2,5).setValue(input3);                                                   //Mov.Pattern/Muscle Group
    webAppSheet.getRange(2,6).setValue(input4);                                                   //Sets
    webAppSheet.getRange(2,7).setValue(input5);                                                   //Reps
    webAppSheet.getRange(2,8).setValue(input6);                                                   //RIR
    webAppSheet.getRange(2,9).setValue(input7);                                                   //Kg                             
    webAppSheet.getRange(2,10).setValue(new Date());                                              //Timestamp


  } 

  function getDropDownArray (){
    var ss2 = SpreadsheetApp.openById("1JJrWaeiDUC7TKFo3zjG3MHWJ90OnU6N3AiEh-9cXdaE");                                         //Google Sheet ID
    var dropdownSheet = ss2.getSheetByName("SupportSheet");                                                                    //Sheet with dropdown options
    var lastRowdd = dropdownSheet.getLastRow();

    return dropdownSheet.getRange(1,2,lastRowdd, 1).getValues();

  }

HTML

  <!doctype html>
  <html lang="en">
    <head>
      <!-- Required meta tags -->
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">

      <!-- Bootstrap CSS -->
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">

      <script>
      function AddRow()
      {
        var input1 = document.getElementById("input1").value;
        var input2 = document.getElementById("input2").value;
        var input3 = document.getElementById("input3").value;
        var input4 = document.getElementById("input4").value;
        var input5 = document.getElementById("input5").value;
        var input6 = document.getElementById("input6").value;
        var input7 = document.getElementById("input7").value;
        if(input1 != '' && input2 != '' && input3 != '' && input4 != '' && input5 != '' && input6 != '' && input7 != '')
        {
        google.script.run.AddRecord(input1, input2, input3, input4, input5, input6, input7);
        document.getElementById("input1").value = '';
        document.getElementById("input2").value = '';
        document.getElementById("input3").value = '';
        document.getElementById("input4").value = '';
        document.getElementById("input5").value = '';
        document.getElementById("input6").value = '';
        document.getElementById("input7").value = '';
        document.getElementById("display_error").innerHTML = "";
        }
        else
        {
        document.getElementById("display_error").innerHTML = "Enter All Information";
        }
      }
      </script>
          
    </head>
    <body>
    <!-- Login Form -->
    <div class="container-fluid">
      <div class="row justify-content-center mt-5">
        <div class="col-lg-4 col-md-6 col-sm-6">
          <div class="card shadow">
            <div class="card-title text-center border-bottom">
              <h2 class="p-3">Data Entry</h2>
            </div>
            <div class="card-body">
              <form>
                
                <div class="mb-4">
                  <label for="input1" class="form-label">Input1</label>
                  <input type="date" class="form-control" id="input1" />
                </div>
                              
                <div class="mb-4">
                  <label for="input2" class="form-label">input2</label>
                  <input type="text" class="form-control" id="input2" />
                </div>
                
                <div class="mb-4">
                  <label for="input3" class="form-label">input3</label>
                  <select class="form-control" id="input3" >
                  </select>

                  
                </div>
                
                <div class=row>
                
                <div class="col mb-4">
                  <label for="input4" class="form-label">input4</label>
                  <input type="number" class="form-control" id="input4" />
                </div>
                
                <div class="col mb-4">
                  <label for="input5" class="form-label">input5</label>
                  <input type="number" class="form-control" id="input5" />
                </div>
                  
                </div>
                
                <div class=row>
                
                <div class="col mb-4">
                  <label for="input6" class="form-label">input6</label>
                  <input type="text" class="form-control" id="input6" />
                </div>
        
                <div class="col mb-4">
                  <label for="input7" class="form-label">input7</label>
                  <input type="text" class="form-control" id="input7" />
                </div>
                  
                </div>
                
                <div class="mb-4">
                  <input type="button" value="Submit" class="btn btn-primary mr-1" onclick="AddRow()" />
                  <div id="display_error" style="color: red" ></div>
                </div>
                              
              </form>
            </div>
          </div>
        </div>
      </div>
    </div>


  <script>
    
  function afterPageLoads() {
    google.script.run.withSuccessHandler(afterDropDownArrayReturned).getDropDownArray();
    
  }

  function afterDropDownArrayReturned(arrayOfArrays){
    var dditem = document.getElementById("input3");

    arrayOfArrays.forEach(function(r){
      var option = document.createElement("option");
      option.textContent = r[0];
      dditem.appendChild(option);
    });
  }

  document.addEventListener("DOMcontentLoaded",afterPageLoads);

  </script>


  <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js" integrity="sha384-Atwg2Pkwv9vp0ygtn1JAojH0nYbwNJLPhwyoVbhoPwBhjQPR5VtM2+xf0Uwh9KtT" crossorigin="anonymous"></script>
    </body>
  </html>

【问题讨论】:

    标签: google-apps-script dropdown spreadsheet bootstrap-5


    【解决方案1】:

    我认为在你的脚本中,DOMcontentLoaded 是需要修改的。

    发件人:

    document.addEventListener("DOMcontentLoaded",afterPageLoads);
    

    收件人:

    document.addEventListener("DOMContentLoaded", afterPageLoads);
    
    • 本次修改中,DOMcontentLoaded修改为DOMContentLoaded

    注意:

    • 在此修改中,假设 Google Apps Script 端的脚本和其他 Javascript 工作正常。请注意这一点。

    参考:

    【讨论】:

    • OMFG 谢谢!我不敢相信这只是一封信,非常感谢,我希望它没有占用你太多时间,谢谢谢谢!!!
    • @Rolroorlo 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多