如何通过应用脚本获取带有复选框项选项的字符串数组字符串[ ]?



如Class ItemResponse中所述

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

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

该功能的问题在于,对于复选框(多个检查可用(的项目,仅导入一个选中的答案,我需要它们。

所以我尝试了以下代码,但 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");
}
}
}
}

你能帮我获得复选框项目上选中的所有选项吗?

提前谢谢。

作为一个简单的修改,如果你的脚本被修改了,这个修改怎么样?

修改点:

  • chkIteml=l+1+chkItem.getChoices().length;未声明。所以我认为这一行发生了错误。
  • 在 for 循环中,直接使用数组。因此,请将response替换为response.length
    • 我想这可能是你问题的原因。

修改后的脚本:

从:
for (var m = 0; m < response; ++m) {

base.getRange(inicio, l+m+1).setValue(response[m]);
}
l=l+1+chkItem.getChoices().length;
自:
for (var m = 0; m < response.length; ++m) { // Modified
base.getRange(inicio, l+m+1).setValue(response[m]);
}
l=l+1+response.length; // Modified

如果我误解了你的情况,这不是你想要的结果,我很抱歉。

最新更新