Google电子表格,在表单提交上创建多行

时间:2014-07-23 14:43:48

标签: google-apps-script google-sheets google-docs google-form

我有一个写入电子表格的Google表单。

目前在表单sumbmit上创建了一个新行。

我想做的是; 在表单上有一个数字字段,用户选择一个值N. 提交表单时,我希望电子表格能够创建N行相同的数据。

我从几个方面考虑过它。 如果它可以基于N自动化,那将是最好的。 或者,值N可以放在一个隐藏的列H中,电子表格上的脚本可以读取这个并将该行复制N次,如果这样做,可能会在H {N,N-1,... 1}列中向下计数。更轻松。

1 个答案:

答案 0 :(得分:1)

表单提交脚本时;

  • 读取新数据
  • 获取数字或所需行(N)
  • 复制模板行,使N行空白行正确 格式和功能
  • 将新数据复制到新的空白行中。

    function onSubmit(){
      //表格提交的表格   var sheet = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(" FORM TARGET 1");
      var lastRow = sheet.getLastRow();
      //阅读指定栏目中新行的数量"表格目标1"
      var N = sheet.getRange(lastRow,1).getValue();

    //我们将要写的工作表   var sheetRec = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(" Target");
      var lastColumn = sheetRec.getLastColumn();
      var lastRowT = sheetRec.getLastRow();

    //通过在模板行中复制N次来创建N个新行   var Template = sheetRec.getRange(2,1,1,lastColumn);
      for(j = 1; j <= N; j ++){
        Template.copyTo(sheetRec.getRange(lastRowT + j,1));
      }

    //将新数据值复制到行中   var Val1 = sheet.getRange(row,1);
      var Val2 = sheet.getRange(row,5);
      var Val3 = sheet.getRange(row,7);
      var Val4 = sheet.getRange(row,8);
      Val1.copyValuesToRange(sheetRec,1,1,lastRowT + 1,lastRowT + N);
      Val2.copyValuesToRange(sheetRec,2,2,lastRowT + 1,lastRowT + N);
      Val3.copyValuesToRange(sheetRec,4,4,lastRowT + 1,lastRowT + N);
      Val4.copyValuesToRange(sheetRec,5,5,lastRowT + 1,lastRowT + N);
    }

有一个原因我只是从FORM TARGET 1复制某些单元格,以及为什么范围不能顺序。

我必须使用for循环来复制模板行,因为copyValuesToRange()&amp; copyFormatsToRange()不复制函数。我在某些列中有函数可以处理复制的数据。

我已经更完整地讨论了这个问题here