【问题标题】:.gs/.html - Google Apps Script as a Web App using Form Elements, Html Service and a spreadsheet.gs/.html - 使用表单元素、Html 服务和电子表格作为 Web 应用程序的 Google Apps 脚本
【发布时间】:2015-01-04 17:42:24
【问题描述】:

我目前正在尝试从“Web 应用程序”的角度学习一些“Google Apps 脚本”基础知识。我想使用“HTML 服务”,因为旧的“UI 服务”现在已被贬值。

基本上我想要完成的是在“名称”文本输入中输入一个名称,然后单击“提交”按钮,然后应该使用输入的值填充电子表格。我认为下面的代码接近我需要的,但我不确定如何将它们联系在一起,以便表单元素与 .gs 代码一起使用。

目前,我发布的代码在打开电子表格时会在电子表格的适当位置写入一个值。

任何帮助将不胜感激。 index.html

<div>
    <? var submit = insertInSS(); ?>
    <p>Add a Name:</p>

    <input type="text" name="name">
    <input type="submit"  name="submit"  value="Submit">

    <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>

我的 code.gs 如下所示

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

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

    function insertInSS(){
      var ss = SpreadsheetApp.openById(submissioSSKey);
      var sheet = ss.getActiveSheet();
      var lastRow = ss.getLastRow();
      var cell = sheet.getRange(lastRow+1, 1, 1,1);
      cell.setValue("name");
    }

问候,

克里斯

【问题讨论】:

    标签: javascript html google-apps-script google-sheets


    【解决方案1】:

    通常,提交按钮与表单一起使用。表单中没有提交按钮。请注意第一个 FORM 标记中的 onsubmit 事件侦听器。这种方式不需要配置触发器来运行脚本,还有其他方式。

    表单和按钮 HTML

    <div id="inputDiv">
      <form id="inputForm" onsubmit="fncWriteInputData()">
        <label>Some Label Text Here:</label>
        <br>
        <input type="text" tabindex="1" id="idFirstInput" class="inptFld" placeholder="Msg To User Here" required><br />
        <label>Label Two Here:</label>
        <br>
        <input type="text" tabindex="2" id="idInputTwo" class="inptFldSgn" required><br />
        <input type="submit" tabindex="3" id="btnSubmitInput" value="Click To Submit">
      </form>
    </div>
    

    HTML 脚本标签

    <script>
      window.fncWriteInputData=function(){
        console.log("fncWriteInputData ran");
        google.script.run
        .fncRunAppScript(); //Runs server side .gs function
    
    </script>
    

    代码.gs

    function fncRunAppScript() {
      Code here . . . 
      return someValue;
    };
    

    这是一些基本结构。您需要根据需要对其进行修改和更正。

    【讨论】:

    • 桑迪,谢谢你帮助我。您的代码示例看起来很棒,但我没有找到成功的方法。我已经尝试将脚本标记放在 index.html 头部和正文之后。我试图将其简化为在单击按钮时仅显示一个警告框,但这也不起作用。单击按钮时,页面将变为空白。
    • 尝试将 .setSandboxMode(HtmlService.SandboxMode.IFRAME) 中的 IFRAME 更改为 NATIVE。 .setSandboxMode(HtmlService.SandboxMode.NATIVE)
    • 桑迪,我发现了我的错误;现在我可以在 IFRAME 模式下将数据写入电子表格......我错过了一个括号。当我单击我的 f5 键时,空白页面会刷新,我会看到新的数据条目。当我将其更改为“本机”时,它不会写入电子表格。寻找 .gs 的“刷新”cmd,以及如何抓取我在文本框中键入的文本以弹出电子表格。这么近了……
    • 感谢您发现错误。如果您缩小问题范围,但仍有问题,请发布另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多