如何通过Apps脚本获取Google表单中带有checkboxItem的选中选项的字符串数组string []?

问题描述 投票:0回答:1

Class ItemResponse中所述

对于CheckboxItem问题,这将返回一个包含响应者选择的String []数组。数组中字符串的顺序可能会有所不同。

我具有导入Google表单答案的功能。它具有各种项目,有些是复选框,有些是段落。这些答案是在电子表格上设置的。

此功能的问题在于,对于复选框(可进行多个检查)的项目,仅导入一个已检查的答案,而我需要它们全部。

所以我尝试了以下代码,但是ver响应不是开发者网站所说的数组,否则我错了:

function leer() 
{
  //Definições iniciais da planilha
  var spreadsheet = SpreadsheetApp.getActive(); 
  
  var DB = SpreadsheetApp.getActive().getSheetByName("REPXT").getRange("A2:D");
  var datos = SpreadsheetApp.getActive().getSheetByName("REPXT").getRange("A2:D500").getValues();
  
  var base = SpreadsheetApp.getActive().getSheetByName("Base de datos REPXT");
  
    //Obter dados do formulário
  for(var i=0;i<SpreadsheetApp.getActive().getSheetByName("REPXT").getMaxRows() +1; i++)
  {
    if(datos[i][3]!="Importado"&&datos[i][2]!=""){
    
      var idg= datos[i][2]
      
    var form = FormApp.openById(idg);
    var formResponses = form.getResponses();
          
    var quant_resp = formResponses.length;
    
    
      //Buscar todas las respuestas
      for( var j = 0; j < quant_resp ; j++ )
      {
        //Obter dados do formulário
        var linhaform = formResponses[j];
        var linharesponses = linhaform.getItemResponses();      
        //Inserir no BANCO R2 - NOMBRE - e na aba AUX_LEER
        var inicio=   base.getLastRow() + 1 ;   
        
        base.getRange(inicio, 2).setValue(datos[i][0]);

          var l=3;
        
        for (var k=0;k<linharesponses.length;k++){  
          
          var itemResponse = linharesponses[k];
          
          base.getRange(inicio, l).setValue(linharesponses[k].getItem().getTitle()); 
          
          if(itemResponse.getItem().getType()== FormApp.ItemType.CHECKBOX){
           var response = itemResponse.getResponse();
           
           for (var m = 0; m < response; ++m) {
            
             
            base.getRange(inicio, l+m+1).setValue(response[m]);
             
           }
            l=l+1+chkItem.getChoices().length;
          }
          else  { base.getRange(inicio, l+1).setValue(linharesponses[k].getResponse());
                l=l+2;
                }
          
          
        }
        SpreadsheetApp.getActive().getSheetByName("REPXT").getRange(i+2,4).setValue("Importado");
      }
    }
  }
}

您能帮我获得checkboxItem上选中的所有选项吗?

提前感谢。

google-apps-script google-sheets google-api google-form
1个回答
0
投票

作为简单的修改,如果您的脚本被修改,那么该修改如何?

© www.soinside.com 2019 - 2024. All rights reserved.