谷歌表单复选框结果为谷歌表格中的新行



我正在尝试实现此问题中接受的解决方案,并将带有复选框的表单自动转换为适当的可旋转列表,就像 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
  }
}

最新更新