合并 google 表单响应 sheet 中的多个复选框响应

Merge multiple checkbox responses in google forms response sheet

我有一个 google 表单,由于各种原因有多个复选框问题。我最终想要合并已知数量的这些。

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

举个例子:

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

并将其复制到另一个页面,如下所示:

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

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

我正在研究 'Quickstart: Managing Responses for Google Forms' 代码以查看发生了什么,但我真的不知道 JavaScript。

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

如果您不介意第二个 sheet 的格式略有不同,则无需脚本即可完成此操作。在第二个 sheet 上,输入您的 headers ('Questions' 和 'Question 4' 在 A1 和 B1。然后在 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 +")")
}