Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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,我正在开发一个测验应用程序。我的电子表格中有4个选项的一些问题,我正在从该电子表格生成动态/运行时表单,因此50个用户有50个不同的表单,但我无法收集对当前测验表的回答 Google电子表格脚本编辑器中的代码: function Quiz(){ var form = FormApp.create('Quiz'); var ss = SpreadsheetApp.getActiveSpreadsheet(), sourceSheet = ss.ge

我正在开发一个测验应用程序。我的电子表格中有4个选项的一些问题,我正在从该电子表格生成动态/运行时表单,因此50个用户有50个不同的表单,但我无法收集对当前测验表的回答

Google电子表格脚本编辑器中的代码:

    function Quiz(){
       var form = FormApp.create('Quiz');
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       sourceSheet = ss.getSheetByName('Sheet1'),
       sourceRng = sourceSheet.getDataRange(),
       sourceRows = sourceRng.getValues(),
       i;
      for (i = 1; i < sourceRows.length; i += 1)
      {
        count = 0;
        var item = form.addCheckboxItem();
        item.setTitle(sourceRows[i][0]);
         item.setChoices([
            item.createChoice(sourceRows[i][1]),
            item.createChoice(sourceRows[i][2]),
            item.createChoice(sourceRows[i][3]),
            item.createChoice(sourceRows[i][4]),
            item.createChoice(sourceRows[i][5]),
          ]);
       }
}
对于静态表单,我使用下面给定的代码获取响应,但如何使用默认设置生成动态表单,其中我的响应目标为电子表格、用户名和脚本编辑器中的给定代码:

function quizAnswers(){
 var form = FormApp.openById(<<dynamic form ID>>);
 var formResponses = form.getResponses();
 for (var i = 0; i < formResponses.length; i++) {
   var formResponse = formResponses[i];
   var itemResponses = formResponse.getItemResponses();
   for (var j = 0; j < itemResponses.length; j++) {
     var itemResponse = itemResponses[j];
     Logger.log('Response #%s to the question "%s" was "%s"',
         (i + 1).toString(),
         itemResponse.getItem().getTitle(),
         itemResponse.getResponse());
}}}

使用此选项选择表单的响应

form.setDestinationFormApp.DestinationType.SPREADSHEET,ss.getId


您好,这是工作,但它正在为每个表单提交创建一个新的响应表。e、 如果用户1,用户2,用户3从它提交将创建3个不同的响应表。我会让你知道如何处理这种情况。我不认为有任何方法可以让表单响应在特定的表单中本地登录。我认为您根本不需要设置目的地类型,而是使用GAS手动附加表单响应。谢谢您的回复。如果我在当前的电子表格中使用onSubmite函数,得到所有的响应并将它们写在一个新的表格中,它会对所有用户起作用吗?