合并 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 +")")
}
我有一个 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 +")")
}