javascript - Google Apps 脚本 HTML 表单不会提交

标签 javascript html google-apps-script

首先,我将向您提供代码并简要说明我要实现的目标。

代码.gs

function onOpen() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .createMenu("Custom Menu")
      .addItem("Show sidebar", "showSidebar")
      .addToUi();
}

function doGet() {
  return HtmlService.createHtmlOutputFromFile("entry");
}

function showSidebar() {
  var html = HtmlService.createHtmlOutputFromFile("entry")
      .setTitle("My custom sidebar")
      .setWidth(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showSidebar(html);
}

function EnterData(fobject) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  sheet.activate();

    ss.toast("Something Happened");

  var range = sheet.getRange(1, 1);
  range.setValue("It worked");
}

function ProgramSuccess() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.toast("Program Run Complete");
}

entry.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      // Prevent form from submitting
      function preventFormSubmit() {
        var forms = document.querySelectorAll('form');
        for (var i = 0; i < forms.length; i++) {
          forms[i].addEventListener('submit', function(event) {
            event.preventDefault();
          });
        }
      }
      window.addEventListener('load', preventFormSubmit);

      function FormSubmit(formObject) {
        google.script.run.withSucessHandler(FormSuccess).EnterData(formObject);
      }
      function FormSuccess() {
        google.script.run.ProgramSuccess;
        google.script.host.close();
      }
    </script>
  </head>

  <body>
    <form id="entryForm" onsubmit="FormSubmit(this)">
      Name:<br>
      <input type="text" name="name">
      <br>
      Client Name:<br>
      <input type="text" name="clientname">
      <br><br>
      <input type="submit" value="Submit">
      <input type="reset">
    </form>
  </body>
</html>

此程序的目的是在显示具有表单(标签)的 html 页面的 google 工作表中打开侧边栏。然后,当您在 html 边栏中单击提交时,它应该运行 Code.gs 中的 EnterData 函数。我的问题是这个函数没有运行,当我点击提交按钮时没有任何反应。

如有任何帮助,我们将不胜感激。

最佳答案

试试这个:

entry.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      // Prevent form from submitting
      function preventFormSubmit() {
        var forms = document.querySelectorAll('form');
        for (var i = 0; i < forms.length; i++) {
          forms[i].addEventListener('submit', function(event) {
            event.preventDefault();
          });
        }
      }
      window.addEventListener('load', preventFormSubmit);

      function FormSubmit() {
        google.script.run.withSucessHandler(FormSuccess).EnterData(document.getElementById("entryForm"));
      }
      function FormSuccess() {
        google.script.run.ProgramSuccess;
        google.script.host.close();
      }
    </script>
  </head>

  <body>
    <form id="entryForm">
      Name:<br>
      <input type="text" name="name">
      <br>
      Client Name:<br>
      <input type="text" name="clientname">
      <br><br>
      <input type="submit" value="Submit" onclick="FormSubmit()">
      <input type="reset">
    </form>
  </body>
</html>

此外,我不明白为什么要将 "entryForm" 对象传递给 EnterData 函数,因为您似乎没有使用它。

关于javascript - Google Apps 脚本 HTML 表单不会提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058331/

相关文章:

html - 强制空 block 元素具有宽度

javascript - 如何将 Google 表格中的列值与 Google Apps 脚本合并

google-apps-script - Google应用程序脚本replaceText仅替换第一次出现的匹配字符串

javascript - 当外部源(firebase)更改单元格时,如何触发谷歌表格中的谷歌应用程序脚本?

javascript - ColdFusion 转换为数字

javascript - 页面转换后的 JQueryMobile 内容跳转(使用数据位置 ="fixed")

javascript - Safari Bug 与元素innerText

javascript - 添加嵌入式谷歌地图时console.log中的警告

javascript - jQuery 和 JS 函数未正确加载到页面中

javascript - 为什么使用 setInterval 时似乎将两个值设置为单个变量?