使用Google Apps脚本解析表单提交

时间:2016-10-25 00:07:51

标签: javascript forms google-apps-script html-form

我有一个Google电子表格,可以加载带有HTML表单的侧边栏。该表格的代码如下:

<script>
function handleFormSubmit(formObject) {
    google.script.run.processForm(formObject);

}
</script>
<form id="myForm" onsubmit="handleFormSubmit(this)">
  PO#: <input type="text" name="po" required><br/>
  Invoice#: <input type="text" name="invoice" required><br/>
  <input type="submit" value="Submit" />
</form>
<div id="output"></div>

它适用于以下脚本:

function processForm(form) {  
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Sheet5');
  var lr = sheet.getLastRow();
  var range = sheet.getRange(lr+1,1,1,1);
  range.setValue(form);
  Logger.log(form);
}

目前我收到了{invoice=####, po=####}。如何解析(如果这是正确的术语)表单提交,以便每个响应可以转到不同的单元格?有没有办法把它变成一个数组?

由于

2 个答案:

答案 0 :(得分:1)

不完全确定您要在此处执行的操作,但我认为您无法将dom对象转移到Google Apps脚本。你可以用这个:

groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method

然后在您的Google Apps脚本中,要获取输入的值,请使用

interface NoArg {
   Object handle();
}
interface OneArg {
   Object handle(Request req);
}
interface TwoArg {
   Object handle(Request req, Response rsp);
}

overloaded

答案 1 :(得分:0)

使用google.script.run.processForm()将表单传回服务器。而不是使用获取最后一行,并添加+1,只需使用appendRow()函数。

    function processForm(form) {  
       var ss = SpreadsheetApp.getActive();
       var sheet = ss.getSheetByName('Sheet5');
       sheet.appendRow(form) //accepts an array [val1,val2,val3]
    }