Google表单复选框结果作为Google表格中的新行

时间:2019-03-27 14:25:24

标签: google-apps-script google-sheets

我正在尝试在this question中实现公认的解决方案,并且将带有复选框的表单自动转换为适当的可旋转列表,就像OP一样。

提交表单后,我无法获得advancedSplit自动运行的代码段。

只有当我手动输入公式时,我才能获得advancedSplit来将一行响应分成多行。

我已经尝试过使用FormForms表单第一行中的advancedSplit来组合使用ArrayFormula的各种组合,以使拆分自动执行无济于事。

有什么想法吗?

1 个答案:

答案 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
  }

}