Google表单会在意外位置插入表格行

时间:2015-08-25 17:07:43

标签: google-apps-script google-form

我有一个奇怪的问题,关于google表单链接表的哪一行放置一个新的表单行。通常,每个表单提交都会向表单添加一行,从第2行开始(第1行是标题),如预期的那样。如果我删除工作表中的所有行,则表单会按预期在第2行提交重新启动。但是,现在假设我手动填充表示表单的前10行(再次,将第1行留作标题,因此行2-11)。现在,当我进行表单提交时,我希望将第12行添加到依此类推,但相反,表单从第2行开始并清除我预先填充的行数据。表格和表格似乎有一个内部的“下一行编号”,它不是基于工作表的实际内容。任何人都可以解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。并找到了解决方法(挖了2个小时后,出了问题所在)

您需要使用一个功能 sheet.insertRowsBefore(rowIndex, numberOfRowsToBeInserted) 首先为数据创建新行(空格),然后将数据添加到创建的行中。 您当然可以在Google表格中手动添加新行-原理相同。

说明:内部有一个表单属性,该属性包含一个行索引,新表单提交将在表单提交之后进行。

当您仅填充数据时,新表单提交的索引保持在先前位置,因此它将重写您(任何)单元格中的数据。

在删除行数据时预期类似的行为-如果仅删除值(例如,通过Delete键),则在出现新表单提交时,行将保留为空。同样,您需要使用函数sheet.deleteRow(index)删除数据并更改新提交的新行的索引。

答案 1 :(得分:0)

听起来您正在使用getActiveCell()getActiveRange()方法查找最后一行。然而,您应该使用getDataRange()方法来获取最后一行和列。 getActiveCell()getActiveRange()方法指向光标在电子表格上的位置。因此,如果它在第1行 - 第2行,那么它将插入您的信息。有关详细信息,请参阅此documentation

答案 2 :(得分:0)

这是设计使然,因此表单提交永远不会覆盖用户插入的数据。这在此回复中得到了很好的证明[1]。

我相信,如果您创建一个使用 createResponse() 方法 [2] 插入旧数据的脚本,您可以解决问题。

[1] https://support.google.com/docs/thread/10244473/google-forms-inserting-at-top-of-sheet?hl=en

[2] https://developers.google.com/apps-script/reference/forms/form#createResponse()