Google Apps脚本 - 将用户输入从SideBar写入电子表格

时间:2016-03-10 17:46:39

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

我在带有一些输入字段的电子表格中有一个侧边栏。 我遇到的麻烦是检索用户响应以放入电子表格。

我在HTML表单中使用action属性,使用以下HTML:

<form action="demo_form.asp">
  Run Number: <input type="text" name = "number"><br>
  <input type="submit" value="Submit" >
</form>

如何在用户点击提交后从“数字”中提取内容,以便将其粘贴到电子表格中。

1 个答案:

答案 0 :(得分:2)

您必须使用google.script.run客户端API。这是技术术语。你不能粘贴&#34; HTML中的值到电子表格的方式与您可以使用的方式相同&#34;复制&#34;和&#34;粘贴&#34;。

您需要从action标记中删除<form action="demo_form.asp">属性。这可能会导致问题。

并且不要使用submit类型的输入标记。 <input type="submit" value="Submit" >

表单中的典型HTML行为,使用&#34;提交&#34;导致发出HTTPS请求,这不是您想要的。您需要检索一个或多个值,或整个表单,然后将这些值发送到服务器。

即使价值是从&#34;客户端&#34;到服务器,并写入电子表格数据,它将自动显示在电子表格中。因此,它不是将数据从侧栏直接插入电子表格。它从侧边栏到服务器,保存到云端硬盘中的电子表格数据,然后在浏览器中显示在电子表格中。

如果将表单对象发送到服务器,则无法发送任何其他内容。如果将单个值发送到服务器,则可以发送多个参数。另一种选择是将对象转换为字符串(JSON.parse(object))并将字符串发送到服务器。

Link to google.script.run documentation

<form id="myForm">
<input type="button" value="Submit" onmouseup="writeData()">

<script>
  window.writeData = function() {
    var formObj = document.getElementById('myForm');

    google.script.run
      myServerFunctionName(formObj);
  };
</script>

gs code

function myServerFunctionName(argForm) {
  var valueFromFormObj = argForm.nameAttributeName;

  var ss= SpreadsheetApp.
  var sh = ss.getSheetByName();

  var rng = sh.getRange();

  rng.setValue(valueFromFormObj );
}