Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在google表单响应表中合并多个复选框响应_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Google apps script 在google表单响应表中合并多个复选框响应

Google apps script 在google表单响应表中合并多个复选框响应,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我有一个谷歌表单,出于各种原因有多个复选框问题。我最终希望将已知数量的这些合并 一旦表单提交,我想我可以让一个应用程序脚本获取提交的数据,将其复制到另一个工作表中,然后将前面提到的问题回复合并到单个单元格中 以下面的例子为例: name: 'name' question1: ['a','b','e'] question2: [] question3: ['dog','cat'] question4: ['notMerged'] 并将其复制到另一个页面,如下所示: name: 'name' qu

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

一旦表单提交,我想我可以让一个应用程序脚本获取提交的数据,将其复制到另一个工作表中,然后将前面提到的问题回复合并到单个单元格中

以下面的例子为例:

name: 'name'
question1: ['a','b','e']
question2: []
question3: ['dog','cat']
question4: ['notMerged']
并将其复制到另一个页面,如下所示:

name: 'name'
questions: ['a','b','e','dog','cat']
question4: ['notMerged']
我一直在阅读关于为onFormSubmit设置触发器并获取数据的内容,但对合并结果之类的事情不太确定,将其放在同一行#等中。要合并的字段的列索引是静态的,但是不会有任何字段是空的,因此在加入之前,我需要对每个字段进行空检查

我正在通过“快速启动:管理谷歌表单的响应”代码查看发生了什么,但我真的不知道JavaScript


不是找人帮我写这篇文章,而是帮我指点一下,让我朝着正确的方向走

如果你不介意第二页的格式稍有不同,你可以不用脚本来写。在第二张纸上,在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 +")")
}

如果您不介意在第二张工作表上使用稍微不同的格式,您可以不使用脚本来完成此操作。在第二张工作表上,在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 +")")
}

可以使用JavaScript concat()方法连接数组方法连接数组。嘿,Ed,这正是我要找的。嘿,Ed,请注意-似乎在提交表单时,插入了一行新行,第二张表单上的表单更改了函数。因此,从您提到的空白表单设置开始,如果提交表单并将结果转到“表单响应1”第2行,第二页第2行中的函数从a2、b2等移动到a3、b3。您能更好地解释一下您的问题吗?我不能在提交新表单时进行转换。也许我不明白。单元格
'FormattedData'a3
的公式为
=iferror('form Responses 1'!a3)
当前为空,因为第3行的“表单回复1”表中没有任何内容。我提交了一个新表单,将数据添加到“表单回复1”第3行,当我转到“FormattedData”表时,函数已更改为
=IFERROR('Form Responses 1'!A4)
我无法做到这一点。这是我的测试表的链接。嘿,Ed,这正是我要找的。嘿,Ed,快速注意-似乎在提交表单时,插入了一行新行,第二张表单上的表单更改了功能。因此,从您提到的空白表单设置开始,如果表单提交并产生请转到“表单响应1”第2行,第二页第2行中的函数从a2、b2等移动到a3、b3。您能更好地解释一下您的问题吗?提交新表单时,我无法进行转换。也许我不明白。单元格
“FormattedData”a3
的公式为
=iferror('Form Responses 1'!a3)
这是当前空白,因为第3行的“表单响应1”表中没有任何内容。我提交了一个新表单,将数据添加到“表单响应1”第3行,当我转到“FormattedData”表时,函数已更改为
=IFERROR('Form Responses 1'!A4)
我无法做到这一点。这是我的测试表的链接。