合并谷歌表单响应表中的多个复选框响应

时间:2017-01-14 01:41:36

标签: google-apps-script google-sheets google-form

我有一个谷歌表格,由于各种原因有多个复选框问题。我最终希望将已知数量的这些合并。

提交表单后,我想我可以使用应用程序脚本获取提交的数据,将其复制到另一个工作表,然后将上述问题响应合并到单个单元格csv中。

所以请看以下示例:

name: 'name'
question1: ['a','b','e']
question2: []
question3: ['dog','cat']
question4: ['notMerged']

并将其复制到另一个看起来像的页面:

name: 'name'
questions: ['a','b','e','dog','cat']
question4: ['notMerged']

我一直在阅读有关为onFormSubmit设置触发器并获取数据的信息,但我不确定合并结果,将它放在同一行#等内容。要合并的字段的列索引是静态的但是没有总会有一些空的,所以在加入之前我需要对每个进行空检查。

我正在通过“快速入门:管理Google表单的响应”代码来查看最新情况,但我并不真正了解JavaScript。

不是在寻找有人为我写这篇文章,而是帮助我提供一些指导,让我朝着正确的方向前进

1 个答案:

答案 0 :(得分:2)

如果你不介意在第二张表上略有不同的格式,你可以在没有脚本的情况下这样做。在第二张表格中,输入您的标题(A1和B1中的'问题'和'问题4'。然后在A2中输入:

= IFERROR(JOIN( "," , FILTER('Form Responses 1'!B2:D2, NOT('Form Responses 1'!B2:D2 = "") )))

在B2中输入:

=iferror('Form Responses 1'!E2)

复制公式。在添加表单数据之前,没有数据的行(尚未)将为空白。

我弄清楚发生了什么。提交表单时,它会插入一行,这会导致公式发生变化。使用此代码,它将在正确的行上设置公式。 (删除旧的公式。)如果您有任何疑问,请告诉我。

//you need to set an installable onFormSubmit trigger
function test(){
  var ss=SpreadsheetApp.getActiveSpreadsheet()
  Utilities.sleep(4000)
  var s=ss.getSheets()[1]
  var s1=ss.getSheets()[0]
  var lr=s.getLastRow()+1
  var lr1=s1.getLastRow()
  var r="A"+lr1
  var q="B"+lr1
  var t="D"+lr1
  var u="E"+lr1
   s.getRange(lr, 1, 1, 1).setFormula("=iferror('Form Responses 1'!"+ r +")")
   s.getRange(lr, 2, 1, 1).setFormula("=  IFERROR(JOIN(\",\" , FILTER('Form   Responses 1'!"+ q +":"+ t +", NOT('Form Responses 1'!"+ q +":"+ t +" =\"\")   )))")
   s.getRange(lr, 3, 1, 1).setFormula("iferror('Form Responses 1'!"+ u +")")
}