繁体   English   中英

Google Spreadsheet,在表单提交上创建多行

[英]Google Spreadsheet, Creating multiple rows on form submit

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

当前,在表单上会创建一个新行。

我想做的是 表单上有一个数字字段,用户可以选择一个值N。提交表单后,我希望电子表格创建N行相同的数据。

我已经以几种方式考虑过它。 如果可以基于N进行自动操作,那将是最好的选择。或者,可以将值N放在隐藏的列H中,而电子表格上的脚本可以读取该值并将其复制N次,并可能在H列{ N-1,... 1}(如果这样更容易)。

表单提交脚本时;

  • 读取新数据
  • 获取数量或所需的行数(N)
  • 复制模板行,以给N空白行具有正确的格式和功能
  • 将新数据复制到新的空白行中的适当位置。

    函数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);
    对于(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()和copyFormatsToRange()不会复制函数。 我在某些列中具有对复制数据起作用的函数。

我有更全面讨论了这个问题在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM