我正在尝试在this question中实现公认的解决方案,并且将带有复选框的表单自动转换为适当的可旋转列表,就像OP一样。
提交表单后,我无法获得advancedSplit
自动运行的代码段。
只有当我手动输入公式时,我才能获得advancedSplit
来将一行响应分成多行。
我已经尝试过使用FormForms表单第一行中的advancedSplit
来组合使用ArrayFormula的各种组合,以使拆分自动执行无济于事。
有什么想法吗?
答案 0 :(得分:0)
好的,我已经开始工作了,我跳过了advancedSplit
代码,并在javascript中滚动了自己的代码,并将其绑定到onFormSubmit
触发器以使其在提交表单时运行。修复的数据将写入同一工作簿中的单独工作表中。
我将表单写入的列拖入了顺序,以使它是第一列,即复选框中用逗号分隔的名称列表。列表中每个名称的所有其他列均重复。
工作代码如下:
function repairFormEntries() {
// function breaks csv field returned by form submission checkbox field into multiple rows
var ss = SpreadsheetApp.openById('xxxxxxx');
var raw_sheet = ss.getSheetByName('Raw responses');
var repaired_sheet = ss.getSheetByName('Repaired responses');
var last_rawrow = raw_sheet.getLastRow(); // row number with newly added raw data
var rawRow = (raw_sheet.getRange(last_rawrow,1,1,6).getValues())[0]; //0th element because only one row of data
var names = rawRow[0].split(", "); // split checkbox names into new array called names
for (var i=0; i < names.length; i++) {
var name = names[i];
var repairedRow = [name]; // create new array of data for entry to repaired sheet
repairedRow = repairedRow.concat(rawRow.slice(1)); // append remainder of original data from 2nd column (element 1)
repaired_sheet.appendRow(repairedRow); // add to the bottom of the list
}
}