javascript - Google Sheets 侧边栏 | HTML 表单,如何解析onsubmit formObject?

我正在边栏中创建一个表单,以根据各种标准创建新工作表。我总共有大约 27 个输入。我有一个文本条目,以及几组收音机和复选框。

我坚持只创建一个名称是文本输入的 value 的新工作表。

代码.gs:

var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();

// Create a menu item to access the sidebar.
function onOpen(e) {
  ui.createMenu("Sidebar Test").addItem("Sidebar Test","makeSidebar").addToUi();
};
// Setup the sidebar
function makeSidebar(){
  var html = HtmlService.createHtmlOutputFromFile('Index').setTitle("Sidebar Test");
  ui.showSidebar(html);
};

// Creates the new sheet using the name provided in the form, and in index 4 using the MAINTemplate sheet as a template
function mkSheet(name) {
var templateSheet = ss.getSheetByName('MAINTemplate');
ss.insertSheet(name, 4, {template: templateSheet});
}

索引。html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      // Prevent forms 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 btnMkSheet(formObject) {
        var formObject = formObject;
        var formData = new FormData(formObject);
        var formString = JSON.stringify(formObject);
        var sheetName = formObject.sheetName;
        console.log(formObject.sheetName);
        console.log(formData);
        console.log(formString);
        console.log(sheetName);
        google.script.run.mkSheet(sheetName);
      };

    </script>
  </head>
  <body>
    <button onclick="google.script.host.close()">Close</button>
    <h2>Create a new sheet</h2>
    <form id="myForm" onsubmit="btnMkSheet(this)">
      <label for="nameText">Sheet Name</label>
      <input id="nameText" name="sheetName" type="text" placeholder="QA WEB DEV 01-01-1985" />
      <p>i.e. "QA WEB DEV 01-01-1985"</p>
      <input type="submit" value="Create" />
    </form>
 </body>
</html>

当我在文本输入中输入名称并单击创建按钮时。它不会创建新工作表。相反,它会在控制台中引发错误。

并且四个控制台日志如下。

<input id="nameText" name="sheetName" type="text" placeholder="QA WEB DEV 01-01-1985">
FormData {}
{"0":{},"1":{}}
<input id="nameText" name="sheetName" type="text" placeholder="QA WEB DEV 01-01-1985">

未捕获的 InvalidArgumentError:由于属性中的非法 value 失败:0

我可能只是通过使用查询选择器来获取输入的 value 。但我还有很多东西要添加到表格中。我想弄清楚使用formObject的正确方法。

回答1

在您的脚本中,如何进行以下修改?请按如下方式修改Index.html

从:

var sheetName = formObject.sheetName;

至:

var sheetName = formObject.sheetName.value;
  • formObject.sheetName 是对象。因此,请检索 value。

相似文章

excel - 修复对象变量不是 set

我在使用宏时遇到问题。我不断得到错误91:对象变量不是set但是在声明variables时,我看不到我错过了什么。我尝试做的基本上是在一个文件中获取一些数据并将其重新组合到另一个文件中所以这是我的代码...

最新文章