【问题标题】:Get form input text value to insert in a Google Spreadsheet获取表单输入文本值以插入到 Google 电子表格中
【发布时间】:2015-01-11 14:50:51
【问题描述】:

我有一些有效的代码,但我需要引入一个表单 value 而不是我的硬编码文本。我正在使用 Google Apps Script 的 HTML 服务和 Google 电子表格来尝试实现目标。我希望专家能善意地分享解决方案。

我的 index.html

<div id="inputDiv">
  <form id="inputForm" onsubmit="fncWriteInputData()">
    <label>Name:  </label> <br />
     <input type="text" tabindex="1" id="idFirstInput" class="inptFld" placeholder="Add a name" required><br />
     <label>Number:</label> <br />
     <input type="text" tabindex="2" id="idSecondInput" class="inptFld" placeholder="Employee number" required><br />
    <br />
    <input type="submit" tabindex="3" id="btnSubmitInput" value="Click To Submit">
  </form>
</div>
<div>
<hr>
<? var data = getData(); ?>
<table>
  <? for (var i = 0; i < data.length; i++) { ?>
    <tr>
      <? for (var j = 0; j < data[i].length; j++) { ?>
        <td><?= data[i][j] ?></td>
      <? } ?>
    </tr>
  <? } ?>
</table>
</div>
<script>
 fncWriteInputData=function(){
    var value = (inputForm.idFirstInput)
    console.log("fncWriteInputData ran");
    google.script.run
    .fncRunAppScript(); //Runs server side .gs function    
}

</script>

我的 code.gs 看起来像

var submissioSSKey = '1N6uShSxHwhFYrfTDhJyp8ohCHpvElVAOtuGdQv3kt8k';
function doGet() {
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate()
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

function getData() {
  return SpreadsheetApp
      .openById(submissioSSKey)
      .getActiveSheet()
      .getDataRange()
      .getValues(); 
}

function fncRunAppScript(inputForm){
 var ss = SpreadsheetApp.openById(submissioSSKey);
 var sheet = ss.getActiveSheet();
 var lastRow = ss.getLastRow();
 var cell = sheet.getRange(lastRow+1, 1, 1,2);
 var value= "Frank"; //this works but I need the value in the text box
//  var value = value.idFirstInput;//nogo
// var value= index.html.inputForm.idFirstInput.getValue();//nogo 
 var value2= "123"; 
// cell.setValues([[value1a,value2a]]);//this one works 
 cell.setValues([[value,value2]]);//this one works 
  }

如果我是 "//"

var value= "Frank"; //this works but I need the value in the text box

然后尝试类似的东西

 var value= index.html.inputForm.idFirstInput.getValue();

我没有得到表单值

我希望有人能告诉我如何从输入表单中获取值,以便将其插入到电子表格中。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我刚从 +Anees Hameed 那里看到这个 在https://plus.google.com/106533582137684473193/posts/dNxkPDrFZB8

    Index.html

    <form id="myForm">
    <input id="firstName" name="firstName" type="text" />
    <input type="button" value="Submit" 
     onClick="google.script.run.withSuccessHandler(DataSaved).processForm(this.form)"
            />
    </form>
    <div id="Message"></div>
     <script>
        function DataSaved(){    
        document.getElementById('Message').innerHTML = "Data Saved";
    };
     </script>
    

    代码.gs

    function doGet() {
      return HtmlService.createHtmlOutputFromFile('Index')
        .setSandboxMode(HtmlService.SandboxMode.IFRAME);
    }
    
    function processForm(myForm) {
      var firstName = myForm.firstName;
      var ss = SpreadsheetApp.openById('ID'); 
      var sheet = ss.getSheetByName('Sheet1');
      var email = Session.getActiveUser().getEmail();
      sheet.getRange(sheet.getLastRow()+1, 1, 1, 3).setValues([[Date(), email, firstName]]);  
    }
    

    【讨论】:

    • 太甜了!正是我需要的。你让我开心。
    • 非常有帮助。谢谢迈克尔!
    猜你喜欢
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多