我正在尝试实现此问题中接受的解决方案,并将带有复选框的表单自动转换为适当的可旋转列表,就像 OP 一样。
我无法在提交表单时自动运行advancedSplit
的代码片段。
我可以advancedSplit
将一行响应拆分为多行,但前提是我手动输入公式。
我已经尝试了 ArrayFormula 的各种组合,利用表单响应表第一行中的advancedSplit
来让拆分自动执行无济于事。
有什么想法吗?
好的,我有这个工作,我跳过了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
}
}