我有一个写入电子表格的Google表单。
目前在表单sumbmit上创建了一个新行。
我想做的是; 在表单上有一个数字字段,用户选择一个值N. 提交表单时,我希望电子表格能够创建N行相同的数据。
我从几个方面考虑过它。 如果它可以基于N自动化,那将是最好的。 或者,值N可以放在一个隐藏的列H中,电子表格上的脚本可以读取这个并将该行复制N次,如果这样做,可能会在H {N,N-1,... 1}列中向下计数。更轻松。
答案 0 :(得分:1)
表单提交脚本时;
将新数据复制到新的空白行中。
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。